特定のページでnoindexを出力する方法

[WordPress] 特定のページでnoindexを出力する方法

※ 当サイトは広告を含みます。

SEO的には不要なページは'noindex'を記述して評価を上げろてSEOマスターが言ってました。
不要ページで真っ先に候補になるのが固定ページです。これをコードから指定する方法です。

りさ
りさ

誰ですか。SEOマスターって。

管理人
管理人

検索すると上位に表示されるサイトたち。大体そう書いてあった(適当)。

◆ 安全にfunctions.phpをカスタマイズする方法
functions.phpの修正に不安がある人は以下を参考にしてください。

コードを追加する

functions.phpとかに以下のコードを追加します。


// 特定ページでnoindexを出力
add_filter('wp_robots', function (array $robots) {
  if (条件) {
    $robots['noindex'] = true;
  }

  return $robots;
});

このサイトの場合はこうなってます。


// 特定ページでnoindexを出力
add_filter('wp_robots', function (array $robots) {
  if (is_home() || is_archive() || is_paged() || is_attachment() || is_date() || is_author() || is_search() || is_404() || is_page(array('authors', 'ranking', 'contact'))) {
    $robots['noindex'] = true;
    $robots['follow']  = true;
  }

  return $robots;
}, 2);

何となくmetaタグのfollowも追加。後はfilterの実行優先度を2(最後の行)に上げてます。

仕組み

単にif文で自身の(表示された)ページが特定のページか判断して、対象のページならmetaタグを追加してます。
if文に記述してる関数類を大雑把に解説すると以下です。自身のコードを作る際の参考にしてください。

is_home()

投稿インデックスページか判断する。

いわゆるサイトのトップページではありません。トップページを判断する場合はis_front_page()を使います。
ただし、この機能はWordPressに設定した内容で変わるため、一概に同じパターンにはなりません。

具体的には以下の設定項目の[ホームページ]を判断するのがis_front_page()[投稿ページ]を判断するのがis_home()です。
なお、ホームページの表示で[最新の投稿]を選択してる場合は両者の関数は同じ結果になるらしい(試してないので不明)。

表示設定

is_archive()

アーカイブページか判断する。

is_paged()

ページ分割してる場合に2ページ目以降か判断する。

is_attachment()

添付ファイルのページか判断する。

is_date()

日付アーカイブページか判断する。

is_author()

著者アーカイブ(投稿者の記事一覧)か判断する。

is_search()

検索結果ページか判断する。

is_404()

404ページか判断する。

is_page()

任意の固定ページを判断する。自作のページなど、特定の固定ページを判断したい場合に使う。
指定可能なのはID、タイトル、スラッグとなり、配列を利用すると複数個を同時に指定できる。

ちなみに引数0で無条件に固定ページを判断します。固定ページ全部を対象にしたいならそうします。
まぁ、現実的には特定の固定ページのみを対象にすると思うので、配列を利用して以下みたいな記述をします。


is_page(array('authors', 'ranking', 'contact'))

動作確認

少なくとも、コード適用後にサイトを表示してmetaタグを確認しましょう。
対象のページには以下みたいなHTMLが出力されます。


<meta name="robots" content="noindex">
管理人
管理人

自分の意志と異なるなら条件が間違ってます。悲しみを背負う前に修正しましょう。

りさ
りさ

本来インデックス登録したいページにnoindexが付いたら終わりだよ。

あとがき

SEOが強めのテーマなら設定ポチポチ機能が標準搭載されてるかもですね。
カスタマイズできる人はテーマに頼らず直接コード書いてもいいと思います。

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。