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タグが書きこまれる事になりますね。
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の開始タグに近い方(上の方)に設置しましょう。
上記2つが記述できれば、各ページ編集画面の右欄に「Noindex」のチェックボックス欄が表示されます。
これは投稿・固定ページ・カスタム投稿でも表示されます。
チェックをつけるとそのページにnoindexタグが入り、インデックスされなくなります。
これで管理画面から自由にインデックスページの選択ができますね。
プラグインを使ったインデックス操作
次は簡単にプラグインを使う方法です。
「mypace Custom Meta Robots」プラグインを利用すると、先程と同様にページ単位でインデックスのON・OFFができます。
functions.phpやheader.phpなどテーマファイルを編集する必要もありません。
mypace Custom Meta Robots
まずはmypace Custom Meta Robotsで検索して、プラグインをダウンロード・有効化しましょう。
そうすると、投稿や固定ページごとの編集画面に以下のようなオプションが表示されます。
ここから任意に設定ができる訳です。
上記のプラグインでは、noindex以外にnofollowも設定可能です。
WP Custom Noindex Nofollowプラグイン
本プラグインはきちんと動作するのですが、2年程更新がされていない事が唯一の不安です。
それが不安な場合は「WP Custom Noindex Nofollow」プラグインがあります。
ただし上記プラグインは、Wordpressの管理画面からダウンロードできる公式プラグインではありません。
ですので別途専用ページからダウンロード・アップロードして使う必要があります。
プラグインダウンロード
以下のリンクから直接ダウンロードできます。
一括設定・個別設定が可能
管理画面の「Noindex Nofollow」メニューから、ページの種類別に一括設定ができます。
上の一括設定を使わなくても、各ページにインデックスのON・OFFのチェックマーク欄が生成されます。
ここで個別に設定できる様にもなっています。
インデックス操作時の注意
インデックス操作の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を併用して使う傾向にあります。