Wordpress特定ページをインデックスさせない方法(noindex・nofollow)

Wordpress特定ページをインデックスさせない方法(noindex・nofollow)

Wordpress特定ページをインデックスさせない方法(noindex・nofollow)

Wordpressの各ページをインデックスすさせる・させないの操作は、noindexのmetaタグをheadに入れる事で対処します。

手書き設定やプラグインを使う事で、各ページの編集画面にnoindexのチェックボックスを出してON・OFFが設定できます。

noindexをつける際はセットでnofollowも付けます。これにより対象ページからリンクで辿れる他のページの価値を守っています。

特定ページをGoogleにインデックスさせない

先日、会社サイトのWordpressテーマを複製して別ドメインで系列会社のWordpressサイトを作るという案件がありました。

TOPページだけその別会社名でヒットするようにし、それ以外のページはインデックスさせたくないという要望です。

SEO評価の高いサイトの邪魔をしない様に

元々の会社サイトはかなり良い順位を確保しているWordpressサイトです。

テーマファイルが同じですし内容もほぼ同じなので、その複製サイトと思われたくない訳です。

この様に様々な理由で、インデックスさせたい・させたくないページが出てきます。

本記事では、Wordpressの各ページごとにインデックス許可・不可の選択をするいくつかの方法についてご紹介します。

TOPページのみインデックスを許可、それ以外は禁止

まずTOPページはインデックスを許可し、それ以外のページはインデックスさせない場合です。

ケースとしては稀ですが、一応ご紹介しておきます。

つまり開いているページが「TOPページ以外」の場合に、noindexメタタグを埋め込めば良い事になりますね。

これは「TOPページのみA、それ以外はB」というif文の条件分岐を使えば、簡単に実現できます。

コード例

テーマファイルのheader.php、headタグ内に記述していきます。

header.php(headタグ上部)への記述

<?php if ( !is_home() && !is_front_page() ) : ?> <meta name="robots" content="noindex"> <?php endif; ?>

上記のコードは、対象ページが「TOPページ或いはフロントページで無い場合」が発動条件となります。

※!の部分が「~ではない」という意味になります。

これによりTOPページ以外のページで条件が発動し、metaタグが書きこまれる事になりますね。

noindexタグが入った様子

TOPページ以外の全てのページが、インデックス対象から外れます。

管理画面からページ単位で任意にnoindexを設定

次は、管理者がページ単位で任意にnoindexをつけ外しできる様にする方法です。

管理画面にチェックボックス欄を表示させ、ページごとにインデックスのON・OFFができるようになります。

コード例

テーマのfunctions.phpとheader.phpに、設定を書き込みます。

functions.phpの記述

//メタボックスの追加 add_action( 'admin_menu', 'add_noindex_metabox' ); function add_noindex_metabox() { add_meta_box( 'custom_noindex', 'Noindex(ここはボックスの見出し名)', 'create_noindex', array('post', 'page'), 'side' ); } // 管理画面にフィールドを出力 function create_noindex() { $keyname = 'noindex'; global $post; $get_value = get_post_meta( $post->ID, $keyname, true ); wp_nonce_field( 'action_' . $keyname, 'nonce_' . $keyname ); $value = 'noindex'; $checked = ''; if( $value === $get_value ) $checked = ' checked'; echo '<label><input type="checkbox" name="' . $keyname . '" value="' . $value . '"' . $checked . '>' . $keyname . '</label>'; } // カスタムフィールドの保存 add_action( 'save_post', 'save_custom_noindex' ); function save_custom_noindex( $post_id ) { $keyname = 'noindex'; if ( isset( $_POST['nonce_' . $keyname] )) { if( check_admin_referer( 'action_' . $keyname, 'nonce_' . $keyname ) ) { if( isset( $_POST[$keyname] )) { update_post_meta( $post_id, $keyname, $_POST[$keyname] ); } else { delete_post_meta( $post_id, $keyname, get_post_meta( $post_id, $keyname, true ) ); } } } }

一番下に丸ごと追加で大丈夫です。

header.phpの記述

functions.phpを上書きしたら、次にテーマファイルのヘッダーファイル(大体はheader.php)を開きます。

header.php内のタグの後に下記をコピペしてください。

<?php if(is_singular() && get_post_meta($post->ID , 'noindex' , true)){ echo '<meta name="robots" content="noindex">'; } ?>
※できるだけheadの開始タグに近い方(上の方)に設置しましょう。

noindexのチェックボックスが表示された様子

上記2つが記述できれば、各ページ編集画面の右欄に「Noindex」のチェックボックス欄が表示されます。

これは投稿・固定ページ・カスタム投稿でも表示されます。

チェックをつけるとそのページにnoindexタグが入り、インデックスされなくなります。

これで管理画面から自由にインデックスページの選択ができますね。

プラグインを使ったインデックス操作

次は簡単にプラグインを使う方法です。

mypace Custom Meta Robots」プラグインを利用すると、先程と同様にページ単位でインデックスのON・OFFができます。

functions.phpやheader.phpなどテーマファイルを編集する必要もありません。

mypace Custom Meta Robots

mypace Custom Meta Robotsプラグイン

まずはmypace Custom Meta Robotsで検索して、プラグインをダウンロード・有効化しましょう。

そうすると、投稿や固定ページごとの編集画面に以下のようなオプションが表示されます。

画面下のMeta Robotsの設定欄

ここから任意に設定ができる訳です。

上記のプラグインでは、noindex以外にnofollowも設定可能です。

WP Custom Noindex Nofollowプラグイン

本プラグインはきちんと動作するのですが、2年程更新がされていない事が唯一の不安です。

それが不安な場合は「WP Custom Noindex Nofollow」プラグインがあります。

ただし上記プラグインは、Wordpressの管理画面からダウンロードできる公式プラグインではありません

ですので別途専用ページからダウンロード・アップロードして使う必要があります。

プラグインダウンロード

以下のリンクから直接ダウンロードできます。

一括設定・個別設定が可能

Noindex Nofollowの一括設定画面

管理画面の「Noindex Nofollow」メニューから、ページの種類別に一括設定ができます。

上の一括設定を使わなくても、各ページにインデックスのON・OFFのチェックマーク欄が生成されます。

ここで個別に設定できる様にもなっています。

ページの編集画面上にあるNoindex Nofollowの設定

インデックス操作時の注意

インデックス操作の100%保証はできない

上記で案内した方法はいずれも、Google等の検索サイトにクロールされた時にインデックスの判定がされます。

しかしこちら側の設定を100%、Google側が守る保証はありません

場合によっては意図せずに、インデックスさせたくないページがインデックスされるケースもあります。

逆にインデックスさせたいのに、いつまで経ってもされないケースもあります。

その場合は、改めてGoogle Search Consoleからページのインデックス申請、或いは削除申請をおこなう必要があります。

既にインデックスされたページのブロックはできない

検索エンジンに既に対象ページがインデックスされている場合、そのインデックスは削除されません。

仮に検索エンジンが次に今回設定したURLをクロールした際、noindexの処理がされている事は察知します。

しかし単にそう認識するだけで、インデックス済みのページを削除したりはしないのです。

やはり改めてGoogle Search Consoleから削除申請をする必要がありますね。

noindexとnofollowの違い

プラグインの紹介欄でも出てきていましたが、noindex以外にnofollowという属性もあります。

noindexはそのページをインデックス登録しない命令なので、検索に表示させない事が目的です。

それに対しnofollowは、その対象ページに設置されているリンク(aタグ)を通じて、他のページへリンク効果が流れないようにするものです。

nofollowが設定されたページはリンク移動が止まる

例えば、AページからBページへaタグのリンクが貼ってあるとしましょう。

そのAページに、nofollowが設定された(或いは対象リンクにrel="nofollow"が付与されている)とします。

この場合Googleは、AページからBページにリンク移動をしなくなります

インデックスしないだけでクロールはするため

Aページがnoindexでインデックスされない設定であったとしても、クロール自体は行われます

nofollowがないと、Aページ内のリンクを辿ってさらに別のページまでクロールされていく訳です。

リンクを受けるページはリンク元の評価も受ける

ちょっとSEOの話になりますが、例えばYahooのTOPページにあなたのWEBサイトへのリンクが貼ってあったらどうでしょう。

あの「YahooのTOPページ」からリンクをもらっている訳ですから、あなたのWEBサイトは強烈に高いリンク効果を受ける事になります。

逆にウィルス攻撃を仕掛けるような悪質ページから、あなたのサイトにリンクが貼られていたらどうなるでしょう。

想像通り、あなたのページの評価はがた落ちする訳です。

noindexとしたページの価値に関わらず、nofollowとする

この様にリンクをもらった側は、リンクを出した側の評価を良くも悪くも受けてしまうのです。

nofollowは、noindexにされたAページからリンクを受けているBページが、その評価を少しでも落とさない様にするための策です。

つまりAページのnofollowは、Bページの価値を維持するための措置です。

Aページが外部に与えるリンク評価が必ずしも悪いとは言いませんが、noindexとnofollowを併用して使う傾向にあります。

この記事をシェアする

一押し人気コーナー紹介

Wordpressテーマカスタマイズ系記事