【WordPress】wp-sitemap.xmlから投稿者(users)を削除する方法|wp_sitemaps_add_providerが正解

WordPress 5.5以降の標準サイトマップ(wp-sitemap.xml)には、投稿・固定ページに加えて投稿者(ユーザー)の一覧も含まれます。投稿者ページのURLにはログイン名由来のスラッグが使われるため、セキュリティ・プライバシーの観点から削除したいケースが多くあります。この記事では公式フィルターでusersサイトマップごと無効化する方法を解説します。

この記事でわかること

  • wp_sitemaps_add_provider でusersサイトマップを丸ごと外す(公式・推奨)
  • SEOプラグイン利用時の設定と標準サイトマップの完全無効化
  • サイトマップ以外からユーザー名が漏れる経路と対処の3点セット
スポンサーリンク

方法1:wp_sitemaps_add_provider でusersを外す(推奨)

子テーマの functions.php に次のコードを追加します。サイトマップを構成する「プロバイダ」のうち users だけを登録させない、コアが用意している正攻法です。サイトマップindexからusersの項目ごと消えます。

functions.php:usersサイトマップを無効化(公式の方法)
add_filter('wp_sitemaps_add_provider', function ($provider, $name) {
  if ('users' === $name) {
    return false; // usersプロバイダを登録しない
  }
  return $provider;
}, 10, 2);
「存在しないIDだけ含める」ハックは不完全
古い解説には wp_sitemaps_users_query_args$args['include'] = array(0);(存在しないユーザーID)とする方法が載っていますが、これは中身を空にするだけのハックで、空のサイトマップが残ることがあります。プロバイダごと外せる上記の公式フィルターを使ってください。なお functions.php の編集は管理画面のテーマファイルエディターではなく、子テーマをローカルのエディタで編集するのが安全です。

方法2:SEOプラグインに任せる(重複にも注意)

Yoast SEO や All in One SEO などのSEOプラグインを使っている場合は、プラグインのサイトマップ設定で「著者(投稿者)」を無効化できます。

SEOプラグインが独自のサイトマップを生成する場合、WordPress標準の wp-sitemap.xml と重複します。プラグイン側に一本化するなら、標準サイトマップ自体を無効化しましょう。

functions.php:標準サイトマップを完全に無効化(プラグイン一本化時)
add_filter('wp_sitemaps_enabled', '__return_false');
Search Consoleには正規のサイトマップだけ登録
重複するサイトマップはSEO上好ましくありません。使うサイトマップを1つに決め、Google Search Console にはそのURLだけを登録してください。

重要:ユーザー名はサイトマップ以外からも漏れる

サイトマップを消しても対策は半分です
ログイン名(ユーザー名)は次の経路からも露出します。目的がユーザー名の秘匿なら、3点セットで対処してください。
投稿者アーカイブ?author=1 にアクセスすると /author/ログイン名/ へリダイレクトされ名前が分かる → 投稿者アーカイブを無効にする3つの方法
REST API/wp-json/wp/v2/users で投稿者一覧が取得できる場合がある
表示名の使い回し:公開される表示名をログイン名と同じにしない → ログインIDと表示名の違い・変更方法

RSSフィードに出る投稿者名の対処はRSSフィードの投稿者名を非表示にする方法を参照してください。

よくある質問(FAQ)

Q特定のページだけサイトマップから除外するには?
A標準サイトマップには個別除外の簡単な設定が無いため、SEOプラグインのサイトマップ機能で記事ごとに制御するのが現実的です。なお「設定 → 表示設定」で検索エンジンを拒否すると、サイトマップ自体が出力されなくなります。
Qwp-sitemap.xml を完全に無効化するには?
Aadd_filter('wp_sitemaps_enabled', '__return_false'); を追加します。SEOプラグインのサイトマップに一本化する場合の定番設定です。
Qusersサイトマップを消せばユーザー名は漏れませんか?
Aいいえ。?author=1 のリダイレクトや REST API(/wp/v2/users)からも露出し得ます。投稿者アーカイブの無効化表示名の分離もあわせて行うのが確実です。

まとめ

  • 正解wp_sitemaps_add_providerusers プロバイダを外す(indexごと消える)
  • include=array(0) のハックは空サイトマップが残り得るため非推奨
  • プラグイン一本化なら wp_sitemaps_enabled で標準を無効化し重複を防ぐ
  • ユーザー名の秘匿は3点セット:usersサイトマップ+投稿者アーカイブ+表示名の分離

サイトマップ単体でなく「ユーザー名がどこから見えるか」の全体で対策するのがポイントです。