WordPress 5.7から導入されたRobots APIを使用して不要なページにnoindexを指定する方法を解説します。WordPressは検索エンジンにインデックスさせる必要のないページを大量に生成しますが、それらのインデックスを制御することで、クロールバジェットを節約し、低品質ページがインデックスされることを防ぎます。
WordPress 5.7で追加されたRobots API
WordPress 5.7から新たに、検索インデックスの制御に使用するrobotsメタタグの出力を制御するRobots APIが導入されました1。初期値では次のようなmetaタグがhead要素内に出力されます。
<meta name="robots" content="max-image-preview:large" />
Googleのヘルプによれば「max-image-preview」は検索結果に表示されるページの画像プレビューの最大サイズを設定するもので「large」はビューポートの幅までの画像プレビュー許可するものだといいます2。
また、サイト内検索の結果ページ( “is_search()” に一致)には、上記のものに加えて「noindex, follow」が指定され、次のようなmetaタグが出力されるようになりました3。Googleは検索結果に検索結果が表示されることを嫌いますので、SEOの視点から非常に合理的な変更だと言えます。
<meta name="robots" content="noindex, follow, max-image-preview:large" />
不要なページにnoindexを追加するコード
新たに導入されたRobots APIでは、wp_robotsフィルターフックを使ってrobotsメタタグの出力を制御します。これを受けて、インデックスの制御にnoindex metaタグを使用している場合の書き方が変わります。以下の例はこのサイトで使用しているもので、 functions.php に記述して、アタッチメントページ、著者アーカイブ、日付アーカイブにnoindexを出力するコードの例です。
function noindexSuperfluousPages( array $robots ) {
if ( is_attachment() || is_author() || is_date() ) {
$robots['noindex'] = true;
}
return $robots;
}
add_filter( 'wp_robots', 'noindexSuperfluousPages' );
アタッチメントページはWordPressにメディアを追加すると自動的に生成されるページで、例えばこのようなページ(別タブで開きます)です。このようなページは検索ユーザーに価値を提供しない低品質ページですのでnoindexを指定しておくことが適切です。
同様に、このサイトのように一人で運営しているサイトの著者アーカイブ(このサイトの例)は “is_home()”と完全に重複しますから検索エンジンにインデックスさせる必要はありませんし、また、このサイトのように日付で管理していないサイトであれば日付アーカイブも検索エンジンにインデックスされる必要はありません。
このように、サイトの運用状況に合わせてnoindexにするページ群を選択すればよいでしょう。運用状況によっては、タグアーカイブ( “is_tag()” )をnoindexにしたいケースや、カテゴリアーカイブ( “is_category()” )をnoindexにしたいケースなどもあるかもしれません。
まとめ
この記事に書いたことは非常に細かいことで、これを実施したからといって検索結果のランキングが大きく向上することはなく、または逆に実施しなかったからといって検索結果のランキングで不利になることもありません。実施することによる具体的なメリットはサーチコンソールのインデックス カバレッジ レポートの見通しがよくなる程度です。
この記事の内容を実施することでインデックスの対象となる重複URLを減らし、「クロール済み – インデックス未登録」や、「重複しています。Google により、ユーザーがマークしたページとは異なるページが正規ページとして選択されました」の表示を減らして見通しをよくし、重大な問題を発見しやすくなりますが、あくまでそれだけです。
技術面に疎いなどfunctions.phpの編集に不安がある場合には、この記事の内容は無視して構いません。サーチコンソールでインデックス状況を細かく見ている人で、かつ技術面に不安のない人であれば、やってみるといいでしょう。WordPressはインデックスの必要のないページを大量に生成しますが、それらをnoindexにしておけば、検索エンジンと自分自身のリソースを少しだけ節約できます。