2026.09.04

プラグインなしでWordPressのXMLサイトマップを整える(不要URLの除外まで)

プラグインなしでWordPressのXMLサイトマップを整える(不要URLの除外まで)

WordPressのXMLサイトマップは、プラグインを入れなくてもコア機能だけで運用できます。ただしデフォルトのままだと、投稿者一覧やタクソノミーなど「検索結果に載せたくないURL」までサイトマップに含まれてしまいます。この記事では、当社サイトのSEO実装で実際に行った、コアサイトマップの有効化から不要URLの除外までを、実コード付きで紹介します。

プラグインを使わないという選択

サイトマップというとYoast SEOやXML Sitemapsなどのプラグインが定番ですが、WordPress 5.5以降はコア自体がサイトマップ生成機能を持っています。/wp-sitemap.xml にアクセスするだけで、投稿・固定ページ・タクソノミーなどのサイトマップインデックスが自動生成されます。

当社のコーポレートサイトはテーマを自前で管理していて、プラグイン依存を最小にする方針です。サイトマップのためだけに多機能なSEOプラグインを入れるのは過剰なので、コアのサイトマップをそのまま採用しました。追加インストールはゼロ、アップデートの追従もWordPress本体に任せられます。

デフォルトのままだと載りすぎる

ただし、初期状態のサイトマップインデックスを見ると、次のようなものまで含まれています。

サイトマップは「クロールしてほしいURLのリスト」なので、見せる必要のないURLは最初から載せないのが筋です。

フィルターで除外する

コアサイトマップはフィルターフックで細かく制御できます。テーマの functions.php に次の2つを追加しました。

// XMLサイトマップ(wp-sitemap.xml)の調整
// ユーザー一覧とタクソノミーアーカイブを除外
add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) {
    return in_array( $name, array( 'users', 'taxonomies' ), true ) ? false : $provider;
}, 10, 2 );

// 一覧完結型のカスタム投稿タイプをサイトマップから除外
add_filter( 'wp_sitemaps_post_types', function ( $post_types ) {
    unset( $post_types['services'], $post_types['products'], $post_types['solutions'] );
    return $post_types;
} );

wp_sitemaps_add_provider は「サイトマップの種類ごと」の除外で、ここでusersとtaxonomiesを丸ごと止めています。wp_sitemaps_post_types は投稿タイプ単位の除外で、独自に登録したカスタム投稿タイプを外しました。この2つで、サイトマップインデックスは投稿(post)と固定ページ(page)だけのクリーンな構成になります。

ハマりポイント

ひとつ引っかかったのが、「検索エンジンでの表示」設定との連動です。WordPressの設定→表示設定にある「検索エンジンがサイトをインデックスしないようにする」にチェックが入っていると(blog_public=0)、コアサイトマップ自体が無効になり、/wp-sitemap.xml が404になります。

当社サイトは公開前のステージング状態でこの設定をONにしていたため、最初サイトマップが表示されず数分悩みました。動作確認だけ一時的にチェックを外して行い、確認後すぐ戻しています。公開時にこのチェックを外し忘れると、サイトマップどころか検索結果に一切載らないので、公開チェックリストの筆頭に入れておくことをおすすめします。

まとめ

WordPress 5.5以降なら、サイトマップはプラグインなしで十分に実用になります。ポイントは3つです。

Webサイトの構築や、こうした「プラグインに頼りすぎない」設計のご相談は、SERVICESからお気軽にどうぞ。

← TECH-BLOG一覧へ