Search Console のインデックス作成レポートに、こんな項目が出ることがあります。
「送信された URL に noindex タグが追加されています」
まず、対象ページを検索結果に出したいのか、意図してnoindexにしているのかを確認します。
意図したnoindexならサイトマップから外し、意図しないnoindexならページ側の設定を直します。
この報告だけでは、noindexの設定ミスかサイトマップの不整合かは判別できません。
本稿では、意図したnoindexのページがサイトマップに残っている場合を扱います。
この記事では、なぜそうなるのかと、設定に合わせて自動で外す方法をまとめます。
なぜ起きるのか
WordPress 5.5 から、本体が wp-sitemap.xml を自動で出すようになりました。
標準サイトマップは公開投稿や分類の一覧を生成しますが、SEO SIMPLE PACKの個別noindex設定と自動で同期するわけではありません。
noindex かどうかは見ていません。
一方、noindex を出しているのは SEO プラグインのほうです。
SEO SIMPLE PACK なら、設定画面の「投稿ページ」や「タクソノミー」にトグルがあります。
つまり、この2つは別々の仕組みです。
- サイトマップ … 「このURLを見に来てください」という申告
- noindex … 「このページは検索結果に載せないでください」という指示
両方を同時に出している状態になります。
案内された先に「入らないでください」と書いてあるので、report に上がります。
どれくらい起きているか
当方で運用しているサイトを数えてみました。
7サイト・22インストール、2026年9月時点の実測です。
| サイトマップの総数 | noindex が載っていた数 | 割合 |
|---|---|---|
| 3,899件 | 181件 | 4.6% |
| 2,131件 | 293件 | 13.7% |
| 999件 | 25件 | 2.5% |
| 162件 | 44件 | 27.2% |
| 117件 | 13件 | 11.1% |
| 105件 | 34件 | 32.4% |
| 104件 | 1件 | 1.0% |
合計で591件ありました。
サイトマップの3分の1が noindex だったサイトもあります。
特徴として、記事は1件も含まれていませんでした。
全部が分類ページ(カテゴリ・タグ・カスタム分類)と著者ページです。
どれも「検索結果には出さない」と決めて noindex にしてあるものでした。
つまり設定は正しく、サイトマップだけが古いままだった、ということです。
自分のサイトで数える
手順は3つです。
robots.txtを開いて、Sitemap の行を見る- そのサイトマップを開いて、載っているURLを集める
- 1つずつ開いて、
robotsメタに noindex があるか見る
数が少なければブラウザだけでもできます。
サイトマップのURLをいくつか開き、ページのソースを robots で検索してください。
ただ、数が増えると手では追えません。
全数を確認するスクリプトは、この記事の後半に置いています。
数えるときに引っかかった3つ
当方はここで3回、判断を誤りました。
同じところで止まらないよう、先に書いておきます。
1. robots メタは1ページに何本も出る
WordPress 本体と SEO プラグインが、それぞれ別に出します。
しかも引用符が違います。
<meta name='robots' content='max-image-preview:large' /> ← WordPress本体
<meta name="robots" content="noindex"> ← SEOプラグイン片方だけを探すと見落とします。
当方はシングルクォートだけを見て、「noindex になっていない」と誤って判断しました。
1本目で止めず、そのページの robots メタを全部集めてください。
2. 転送されたページの中身で判断しない
著者ページを無効にしていると、開いた先がトップページに転送されることがあります。
SEO SIMPLE PACK の「著者ページを無効化する」がこれにあたります。
転送先はトップページなので、当然 noindex は入っていません。
それを読んで「noindex ではないのに外れた」と勘違いしました。
取得したあと、最終URLが最初に指定したURLと同じかを先に見てください。
def get(url):
"""飛ばされた先の中身で判断しないよう、最終URLも返す。"""
req = urllib.request.Request(url, headers=UA)
res = urllib.request.urlopen(req, timeout=60)
return res.read().decode("utf-8", "replace"), res.url
html, final = get(u)
if final.rstrip("/") != u.rstrip("/"):
# 転送された。転送先の robots を読んでも意味がない
print("転送される:", u, "→", final)
continue3. 取得に失敗したものを「問題なし」に数えない
タイムアウトした分を握りつぶすと、件数が実際より少なく出ます。
当方はこれで10件を取りこぼし、あとから数が合わなくなりました。
失敗した件数は、0件でも必ず表示させたほうがよいです。
放置してよいのか
正直に書くと、これ自体ですぐ順位が下がるものではありません。
Googleがページをクロールしてnoindexを読める状態であることが必要です。設定直後に検索結果から消えるとは限らず、robots.txtでクロールを拒否すると指示を読めません。Googleのnoindexの説明を参照してください。
ただ、2つ困ることがあります。
1つは、レポートが読みにくくなることです。
本当に見るべきエラーが、この項目に埋もれます。
当方の場合、1サイトで293件がこれで埋まっていました。
もう1つは、載せる意味のないURLを毎回渡していることです。
サイトマップは「見に来てほしいURL」を伝えるものなので、そこに「見なくていいURL」が3分の1混ざっているのは、伝え方として正しくありません。
プラグインの設定では直りません
SEO プラグインは noindex を出す担当で、本体のサイトマップには手を出しません。
サイトマップを自前で持つプラグインを使っている場合は、そちらの設定で外せます。
本体の wp-sitemap.xml を使っているなら、フィルタで外すことになります。
WordPress には、そのための入り口が用意されています。
| フィルタ | 外せるもの |
|---|---|
wp_sitemaps_taxonomies | 分類ごと(カテゴリ・タグ・カスタム分類) |
wp_sitemaps_post_types | 投稿タイプごと |
wp_sitemaps_add_provider | 著者ページなど、まとまりごと |
wp_sitemaps_taxonomies_query_args | 分類の中の、特定の用語だけ |
wp_sitemaps_posts_query_args | 投稿タイプの中の、特定の記事だけ |
固定で消してはいけません
ここが一番の注意点です。
「カテゴリを消す」と直接書いてしまうと、あとで設定を index に戻したときに、サイトマップに出てこなくなります。
そして、それに気づけません。
サイトマップは普段見ないものなので、間違ったまま何か月も経ちます。
なので、SEO プラグインの設定を読んで判断させます。
トグルを切り替えたら、サイトマップも一緒に変わる形にします。
全体のnoindexより個別のindex指定を優先する
| 確認項目 | 確認結果・判断 |
|---|---|
| 全体index・個別未設定 | サイトマップに残す。個別noindexだけを除外する |
| 全体noindex・個別index | 個別設定を優先して残す。投稿タイプや分類ごと丸ごと消すと、この例外まで失われる |
| 既存のmeta_query | 新しい条件をANDで加える。他のコードによる絞り込みを上書きしない |
| 著者ページ | noindexと無効化のどちらも確認する。転送したURLは転送先のrobotsと分けて集計する |
| 確認した環境 | WordPress 7.1.2、SEO SIMPLE PACK 3.7.0。実DBの投稿・用語クエリー、標準サイトマップのURL一覧、解除後の復旧を確認 |
修正版の掲載コードはWordPress標準サイトマップ用です。別のSEOプラグインが生成するサイトマップ、ssp_output_robotsによる追加変更、WordPress全体の非公開設定は別途確認してください。公開サイトの設定を変える前に、検証環境で代表URLを比較します。
貼付先はCode SnippetsのPHPスニペット、または子テーマのfunctions.phpです。既存の同目的コードと二重に有効化しないでください。Code Snippetsでは先頭の<?phpを付けません。戻すときは追加したスニペットを停止するか、追加した関数と3つのadd_filterを削除します。停止後に掲載URLを再取得して元の状態へ戻ったかを確認します。
使うのは投稿クエリー、分類クエリーと著者プロバイダーのフィルターです。後半の検査コードは、対象のサイトマップURLを指定し、noindex・転送・取得失敗を別に報告します。
ここから先(有料部分)
以下を掲載しています。
- そのまま貼れるコード全文(3つのフィルタ)
- 設定キーの落とし穴(カテゴリだけ名前が違います)
- 個別に noindex にしたページも拾う書き方
- 効いたかどうかを全数で確かめるスクリプト
- 複数サイトへ一括で入れる方法
- 入れる前後で必ず見る3点
2026年9月の運用例に加え、2026年10月2日に個別のindex指定と既存の絞り込み条件を保持する修正版を検証しました。
この記事だけ読みたい方は単品購入、ほかの有料記事も読みたい方は購読プランをご確認ください。
購読対象の記事・料金は、下のプラン案内で確認できます。
役に立った記事を、ブログやSNSで紹介しませんか?
紹介制度の対象記事・購読プランを購入した方は、codocで専用リンクと報酬条件を確認できます。
専用リンク経由で購入されると、設定された紹介報酬が発生します。
購読プランの紹介報酬は初回課金のみが対象です。
紹介時は、広告・PRであることが読者に分かるように明記してください。



