WordPress の noindex nofollow の制御をページ単位にカスタムフィールドを利用して設定する方法

2015/09/08

WordPress の個別投稿ページや固定ページにおいて、SEO の面で状況により検索エンジンのロボットに対象のページをインデックスして欲しくない場合や、リンクを辿って欲しくない場合があります。これらの制御は meta タグを利用して、noindex や nofollow を設定することで、実現することができます。

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

最終的なゴールのイメージは、以下のメタタグを head タグ内に生成することです。

◆ noindex だけ定義する場合
<meta name=’robots’ content=’noindex,follow’ />

◆ noindex と nofollow を定義する場合
<meta name=’robots’ content=’noindex,nofollow’ />

既存の標準機能だけで実現できるか

WordPress の標準機能で、メニュー [設定] → [検索エンジンがサイトをインデックスしないようにする] にチェックを入れた場合、サイト丸ごと検索エンジンにインデックスさせない設定となり、Google や Yahoo! 等の検索サイトから辿りつけなくなります。

wordpress-set-noindex-nofollow-by-custom-fields02

この機能は、Web ページを公開する前の作成途中の段階でよく利用される機能です。初期設定はチェックが外れていますが、公開前に内容確認をするために、その時点でインデックスされないようチェックを入れ、公開後はインデックスされるようにチェックを外します。

つまり既存の標準機能のみでは、ページ単位での制御が行えません。

そこで今回はカスタムフィールドを使って一工夫し、ページ単位に noindex や nofollow が設定できる方法を説明します。なお、カスタムフィールドを利用するにあたり簡単に作りこみができるので、カスタムフィールド関連のプラグインは利用しません。

WordPress のカスタムフィールドを利用する

カスタムフィールドって何?

通常 WordPress の投稿データには、投稿内容やカテゴリ情報、公開に関する情報やタグなど、入力できる情報が限られています。しかしカスタムフィールドを利用することで、これら定型項目以外に、投稿に対するデータ情報を付与することが可能になります。

そして、その登録されたカスタムフィールド情報は、post_id に対するデータとして wp_postmeta テーブルへ格納されます。論理上はフィールドの追加条件はありませんが、php.ini の設定により初期状態では 82 項目が追加可能な上限となっています。

一般的な個人ブログでは、カスタムフィールドの追加可能上限値を意識する必要はないと思われます。しかも DOS攻撃予防として設定している値であるため、上限を超えるようなケースではリスクを把握した上で変更を行うようにしてください。この件については、以下のサイトに詳しく掲載されています。

WordPressのカスタムメニューが82個以上登録できねーおらおらーって時の対処方法

カスタムフィールドを使ってみよう

話が脱線してしまったので元の話に戻します。このカスタムフィールドは、WordPress の投稿画面で自由に追加することができます。普段は非表示であるため、投稿画面右上の [表示オプション] から [カスタムフィールド] にチェックを入れれば、投稿画面下部にカスタムフィールドが登場します。

wordpress-set-noindex-nofollow-by-custom-fields01

今回追加する変数名は、直感的に分かりやすいように noindexnofollow にしましょう。そしてこの変数が定義された場合に、noindex や nofollow の設定が発動する仕組みとします。

変数名変数値と設定時の動作
noindex0 以外が設定された場合、noindex を設定する
nofollow0 以外が設定された場合、nofollow を設定する

nofollow や noindex を定義する場合に限りカスタムフィールドを使います。値は 0以外であれば何でも良いのですが、分かりやすく「1」をセットする習慣としておきましょうか。

wordpress-set-noindex-nofollow-by-custom-fields03

このままページを公開すれば、データ側の準備は完了です。説明順の都合で、カスタムフィールドの編集方法から説明しましたが、テーマファイル編集を先に行っておかないと、ページの公開と共にインデックス対象になってしまうので十分注意してください。

カスタムフィールドの設定値を利用して noindex nofollow を出力する

noindex や nofollow を定義する meta タグは、head タグの中に記述する必要があります。標準的なテーマファイルであれば、header.php を編集することになります。 head タグ内であればどこでも構わないので、以下のコードを追記してください。

header.php の head タグ内の追記コード

<?php 
// 投稿個別ページと固定ページだけを対象にする
if ( is_single() || is_page() ) {
  // noindex が設定された場合
  if( get_post_meta($post->ID, "noindex", true) ) {
    // noffolow が設定された場合
    if( get_post_meta($post->ID, "nofollow", true) ) {
      // noindex と nofollow を設定
      echo "<meta name='robots' content='noindex,nofollow' />";
    }
    else {
      // noindex のみを設定
      echo "<meta name='robots' content='noindex,follow' />";
    }
  }
  // nofollow のみは基本的に需要が無いので処理から除外
}
?>

L.3 の分岐は入れておかないと、トップ画面やアーカイブ画面で noindex が出力されてしまうので、それを制御する為に入れてあります。また、L.16 へコメントを記載した通り、インデックスはするけれどリンク先を辿らせない設定はメリットが無いので、そちらは必要に応じてアンカータグの属性に rel = “nofollow” を定義するようにしてください。

基本的に noindex を設定したい時だけカスタムフィールドを利用

今回のテーマプログラムの変更において、これまで通り検索エンジンロボットにインデックスもさせるしリンクも辿らせる場合は、カスタムフィールドへ値を定義する必要はありません。インデックスさせたくない場合に限り noindex 変数を定義し、必要に応じて nofollow も定義すれば良いです。

一般的に単一ページをインデックスさせない場合は、noindex, follow のパターンで設定されることが多いです。つまりページとしての価値が低いため、インデックスはして欲しくないが、リンク先は問題ないので辿って欲しいといったケースです。

カスタムフィールドは一度登録すると次回からプルダウンより選択

カスタムフィールドは変数名も直接入力を行いましたが、2回目以降は下記のようにプルダウンから選択することができます。よって 2回目以降は簡単に変数設定を行うことができます。

wordpress-set-noindex-nofollow-by-custom-fields04

このブログの運営者

気力・体力勝負なシステム業界のエンジニアを経て、個人事業主として独立。Web サイト運営、動画制作など活動の場を広げています。目指すところへの道のりは険しいですが、自分が自分らしくあるために、一歩ずつ進んでいきます!

このブログでは、困ってたどり着いた人に、分かりやすく答えを提供できるように心掛けています。更新情報は、Twitter や Facebook ページを参照ください。よろしければフォローお待ちしています。

Facebook ページ NJ-CLUCKER
このブログが役に立ったら
「いいね!」お願いします

最近のエントリー

プラグインを使わず WordPress の投稿ページで PHP の外部ファイルを呼び出す方法

Feedly ボタンが機能していない?!正しい URL の情報に変更する方法

Twitter で過去のツイートを閲覧・削除する方法

赤ちゃんが泣き止む動画「ふかふかかふかのうた」は生後3ヶ月の赤ちゃんにも効果抜群だった!

これで迷わない!東京ディズニーランドの喫煙所マップ一覧【写真付き】

iTunes でアートワークが反映されないのは WAV 形式が原因!AAC に変換すれば反映される!

【徹底比較】WiMAX 2+ ギガ放題プランの最安値はどこ?【2017年10月版】

おすすめのモバイルルーター・ポケット WiFi を比較!選ぶポイントは利用目的に合わせること!

公共料金の支払いはクレジットカードと口座振替のどっちがお得?

iPhone 8・8 Plus は 7・7 Plus のスマホケースをそのまま使えるのか?