WordPressでアーカイブなどのページをnoindexにする方法
WordPressサイトでアーカイブなど特定のページをnoindexにする方法を紹介します。「noindex」とは、検索エンジンに「インデックスしないでね」と伝えるオプションです。結果として、検索結果に出てこなくなります。
「なぜそんなことをするのか?」が理解できない方には不要です。あくまで「このページを検索結果に表示したくない」とか「特定のページをインデックスされないようにブロックしたい」という方の解決策の1つがnoindexだというだけです。
noindexによって特定のページをインデックスさせたくない場合、headタグに次のようなHTMLを追加します。
<meta name="robots" content="noindex" />
SEO系のプラグインや実用的なテーマを使えばコードを書かずに自動で設定できますし、自分でコードを書いてページのheadタグに追加することもできます。以下に事例を紹介します。
この記事の内容
プラグインやテーマでnoindexを設定する場合
All in One SEO PackのようなSEO系のプラグインや、賢威などのテーマを使えばメニューからnoindexを設定することができます。わざわざコードを入力する必要はありません。
以下はAll in One SEO Packプラグインでnoindexを設定するメニューの例です。
個別の記事ごとにnoindexを設定することもできます。以下は賢威のメニュー例です。
これらの機能を使えばコードを記述せずにnoindexを追加できます。
コードを書いてnoindexを設定する場合
相性の問題などでAll in One SEO Packプラグインをインストールできなかったり、賢威のようなnoindex対応のテーマを使えない場合、自力でheadタグにnoindexを追加するコードを書く方法があります。
たとえば、アーカイブをnoindexにするコードの例は次のようになります。子テーマのfunctions.phpなどに入力します。
/* インデックスしないページを設定 */ function my_add_noindex(){ /* アーカイブ */ if (is_archive()) { echo '<meta name="robots" content="noindex" />'; } } add_action('wp_head', 'my_add_noindex');
上記のis_archiveという命令が示すアーカイブにはカテゴリー、タグ、投稿者、年月などのアーカイブページが含まれます。
これで、アーカイブページのみにnoindexが追加されます。HTMLのheadタグを確認してみましょう。
noindexでもリンクは巡回してほしい場合
インデックスはされたくないけど、アーカイブに一覧表示されたページのリンクは巡回してもらいたい場合はnoindexと一緒に「follow」を指定するとよいでしょう。
/* インデックスと巡回の設定 */ function my_add_noindex(){ /* アーカイブ */ if (is_archive()) { echo '<meta name="robots" content="noindex,follow" />'; } } add_action('wp_head', 'my_add_noindex');
インデックスもリンクの巡回も不要な場合
インデックスもリンクの巡回もしてほしくない場合は「noindex,nofollow」を指定します。
/* インデックスと巡回の設定 */ function my_add_noindex(){ /* アーカイブ */ if (is_archive()) { echo '<meta name="robots" content="noindex,nofollow" />'; } } add_action('wp_head', 'my_add_noindex');
さまざまなページをnoindexに
アーカイブ以外にも特定の固定ページや投稿などをnoindexにするコードをまとめておきます。本来はもう少しスッキリ書けますが、個々の条件ごとに編集しやすいように、あえて効率の悪いコードにしてあります。
/* インデックスと巡回の設定 */ function my_add_noindex(){ /* 特定の固定ページ */ if (is_page(array('contactx', 'servicex'))) { echo '<meta name="robots" content="noindex,follow" />'; } /* 特定の投稿 */ if (is_single(array('8888888', '999999'))) { echo '<meta name="robots" content="noindex,follow" />'; } /* 投稿一覧 */ if (is_home()) { echo '<meta name="robots" content="noindex,follow" />'; } /* アーカイブ */ if (is_archive()) { echo '<meta name="robots" content="noindex,follow" />'; } /* 検索結果 */ if (is_search()) { echo '<meta name="robots" content="noindex,follow" />'; } } add_action('wp_head', 'my_add_noindex');
is_archiveとis_homeがまぎらわしいので簡単に説明します。「is_archive」はカテゴリーごとなどのアーカイブページですが、「is_home」は全カテゴリーが含まれる投稿一覧です。一般的なホームページでは「ブログ」メニューのことですが、トップページがブログの場合(「フロントページの表示」が「最新の投稿」の場合)はトップページがインデックスされなくなります。ご注意ください。
あとは自由にカスタマイズしてください。