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

WordPressで「noindex」を特定のページに出力する方法です。

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

WordPress独自の機能では、「noindex」を設定することはできません。なので、自前でPHPを書くか、「All in One SEO Pack」などのプラグインを導入して対応するかの2択になります。

今回、自前で「noindex」を設定をしようと思ったきっかけは、「All in One SEO」プラグインを停止しようと思ったからです。「All in One SEO Pack」は、とても高機能で優秀なプラグインですが、正直、バージョン4.0.0以降は使いにくくなったし、脆弱性も確認されたし、謎のログがテーブルに膨大に蓄積されるし、なんといっても遅いし。

ここでは WordPressで「noindex」を特定のページに出力する方法 を紹介します。


noindexとは?

「noindex」とは、robotsメタタグの一種です。検索エンジンに、対象のページをインデックスしてほしくない場合に利用します。

他にも「nofollow」というメタタグがあり、こちらはリンクをたどってほしくない場合に利用します。

  • noindex: 検索エンジンロボットにインデックスさせない
  • nofollow: 検索エンジンロボットにリンク先をたどらせない

HTMLのheadタグ内に下記のコードを出力させることで機能します。

<!-- noindex -->
<meta name='robots' content='noindex,follow' />
<!-- noindex & nofollow -->
<meta name='robots' content='noindex,nofollow' />

noindexを設定するページ

以下のようなページには積極的に「noindex」を設定しましょう。

  • 404エラーページ
  • 投稿者アーカイブページ
  • 時系列アーカイブページ
  • サイト内検索ページ
  • タグページ(管理・運用できていない場合)

問い合わせページは、「サイト名 問い合わせ」 で検索される可能性が否定できないことから、noindexは設定しないほうがいいと思います。

function.phpへコードを追記する

下記のコードをfunction.phpへ追記することでnoindexを付与できます。

404・投稿者アーカイブ・時系列アーカイブ・検索ページ・タグページ

上記で紹介したページを対象とする場合、下記のコードをfunction.phpへ追記します。

/**
 * noindex付与
 */
function add_my_noindex() {
  // 404 || 投稿者アーカイブ || 時系列アーカイブ || 検索 || タグ
  if ( is_404() || is_author() || is_date() || is_search() || is_tag() )
    echo '<meta name="robots" content="noindex,follow" />';
}
add_action('wp_head', 'add_my_noindex');

特定のカテゴリーに属する投稿ページ

仮に、特定のカテゴリーに属する投稿ページへ出力したい場合には、if文を下記に変更します。

  if ( in_category(array('category-1','category-2')) && is_single() )
    echo '<meta name="robots" content="noindex,follow" />';

まとめ

WordPressで「noindex」を特定のページに出力する方法を紹介しました。

SEOでは欠かせないメタタグ。自前でコードを書くことで、より柔軟に対応ができるのがよいですよね。

とはいえ「All in One SEO Pack」を停止して、全て自前でコードを書こうと思ったら、なかなかの労力ですな。仕事の合間に試しているから、まだまだかかりそう。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。