WordPressサイトを検索エンジンにインデックスしたくない、ということもあるかと思います。また、特定のページのみをインデックスさせたくない場合もあるでしょう。当記事では、WordPressサイトで可能な以下の2つを解説いたします。

どちらの方法も簡単ですので、すぐにインデックスさせない設定が可能です。すでに該当するページがインデックスされてしまっている場合は、こちらをご覧ください。

サイト全体をnoindexにする

サイト全体をnoindexにするには、WordPressのダッシュボードの設定>表示設定>「検索エンジンがサイトをインデックスしないようにする」にチェックを入れればいいのですが、インデックスされているページが瞬時に削除されるわけではありません。

すでにインデックスされているページを確実に削除したい場合は、サーチコンソールの操作が必要です。下記記事を参考にご覧ください。

特定のページのみをnoindexにする

また、サイト全体ではなく、特定のページだけをnoindexにしたい時もあると思います。

例えば、ABテスト用に同じ内容のLPを複数ページつくると重複コンテンツ扱いとなります。その場合は、1つだけindexさせ、その他はnoindexにしたほうが良いです。そんな時に便利なのがこちらの2つ方法。どちらでも可能なので、お好きな方を選んでください。

  • function.phpとheader.phpを編集
  • プラグインを使う

function.phpとheader.php(テーマヘッダー)を編集

プラグインを使いたくない方は、テーマファイル内の「function.php」と「header.php(テーマヘッダー)」を編集する方法があります。とはいえ、以下の記述を各所にコピペいただくだけですので簡単です。管理画面に「noindex」や「nofollow」のチェックボックスを表示して、ページごとに設定可能になります。

※テーマファイルを編集するので、編集前に必ずバックアップを取っておいてください。

まずは、WordPressのダッシュボードの「外観」>「テーマエディター」で「functions.php」を選択し、最下部に以下を追記してください。

// メタボックスの追加
add_action( 'admin_menu', 'add_robots_metabox' );
function add_robots_metabox() {
    add_meta_box( 'custom_robots', 'インデックス設定', 'create_robots_metabox', array('post', 'page'), 'side' );
}

// 管理画面にフィールドを出力
function create_robots_metabox() {
    global $post;
    $fields = ['noindex', 'nofollow'];

    foreach ($fields as $field) {
        $value = get_post_meta( $post->ID, $field, true );
        $checked = ($value === $field) ? ' checked' : '';
        wp_nonce_field( 'action_' . $field, 'nonce_' . $field );
        echo '<label><input type="checkbox" name="' . $field . '" value="' . $field . '"' . $checked . '> ' . esc_html($field) . '</label><br>';
    }
}

// カスタムフィールドの保存
add_action( 'save_post', 'save_custom_robots' );
function save_custom_robots( $post_id ) {
    $fields = ['noindex', 'nofollow'];

    foreach ($fields as $field) {
        if ( isset($_POST['nonce_' . $field]) && check_admin_referer('action_' . $field, 'nonce_' . $field) ) {
            if ( isset($_POST[$field]) ) {
                update_post_meta( $post_id, $field, $_POST[$field] );
            } else {
                delete_post_meta( $post_id, $field );
            }
        }
    }
}

上記を正常に保存できたら、次にテーマヘッダー(header.php)を開き、「</head>」の前に下記をコピペしてください。

<?php
if ( is_singular() ) {
    global $post;
    $robots = [];

    if ( get_post_meta($post->ID, 'noindex', true) === 'noindex' ) {
        $robots[] = 'noindex';
    } else {
        $robots[] = 'index';
    }

    if ( get_post_meta($post->ID, 'nofollow', true) === 'nofollow' ) {
        $robots[] = 'nofollow';
    } else {
        $robots[] = 'follow';
    }

    echo '<meta name="robots" content="' . esc_attr(implode(',', $robots)) . '" />' . "\n";
}
?>

各所に正しく追記できれば、ページごとの編集画面に以下のようなチェックボックスが表示されます。

noindex、nofollowのチェックボックス

  • noindexにチェックを入れた場合:そのページは検索エンジンにインデックスされなくなります。
  • nofollowにチェックを入れた場合:そのページ内のリンクを検索エンジンが辿らなくなります。

プラグインを使う

mypace Custom Meta Robots」というプラグインを活用すれば、テーマファイルを編集することなく、ページごとにインデックスさせないようにすることが可能です。

有効化すると投稿や固定ページごとの編集画面に以下のようなオプションが表示されますので、そちらで任意に設定いただけます。

ページがすでにインデックスされてしまっている場合は?

ページやサイトを公開後、検索エンジンにすでにインデックスされている場合は、それらを瞬時に削除することはできません。当記事でご紹介した方法で正しく設定しても、インデックスされなくなるのは検索エンジン(クローラー)が次に該当URLをクロールした時です。

そのため、確実に削除したい場合は、サーチコンソールで削除申請を行う必要があります。詳しい手順は下記記事をご覧ください。

ちなみに今現在、サイトやページがインデックスされているかどうかは、Googleで下記の検索コマンドを使って調べることができます。

site:https://tcd-theme.com/

上記で検索すると、当サイト(https://tcd-theme.com/)が何ページインデックスされているかの参考値を確認できます。この検索結果に表示されるページ=すでにインデックスされているページなので、すぐに削除するにはサーチコンソールで削除申請が必要となるわけです。

まとめ

WordPressでページやサイトのインデックスを削除する(noindex)にする方法をご紹介しました。

テスト環境などを誤って公開した場合など、すでにインデックスされているサイトを丸ごとをnoindexにする際は、WordPressの設定+サーチコンソールの設定をセットで行いましょう。特定のページのみを事前にnoindexにしておきたい場合は、テーマファイルを編集するかプラグインを使って対応できます。

ABテスト用の内容が重複するLPや、誤って検索エンジンにインデックスされてしまったページなどは、コピーコンテンツとして認識されたり、ユーザーに余計な混乱を与える可能性があります。特定のページは、あらかじめインデックスされないように設定しておくと安心ですね。ぜひ参考にしてみてください。