こんにちは!今回はfeedがSearch Consoleで大量に検出され、ちょっと困ったのでその対処法について記事にしたいと思います。
同じような現象に出会った方は参考にしてみてみるといいかもしれません。(試した後は後日確認し、不具合あるようなら元に戻すのをお勧めします。特にYoastSEOやAll in One SEO PackなどSEO関連のプラグインを導入している場合は要注意だと思います)。

はじまりはURLの末尾に『feed』とついたものが大量検出されていることを発見

発端は先日ウェブサバイバーのSearch Consoleを見ていたら『クロール済み、インデックス未登録』という謎状態を大量に検出していることに気付いたことに始まります。この状態、『Google側で検出したけど価値がない等の理由で除外している』といった検出結果で、あまりいい状態とはいえませんよね。

SearchConsoleを見てみると以下の通りなわけですが、特段そんな設定もしていないわけで。『なんで?』というお話。調べてみるとどうもWordPressではコメント欄がオープンになっていると、こんな形ですべてのURLに付くらしいのです。

試しにURLにアクセスしてみると、あれまぁfeedが表示されます。
feedが表示されるのはいいことですが、Search Consoleで検出されてしまうと、厄介なので、なんとかしたいですね。

※実際に表示されているfeedのURL。直接URLを叩くと表示されます。

対処法:functions.phpでX-Robots-Tagへnoindexをつける

色々調べましたが、まず、そもそも出力しないようにするのと、YoastSEO、All in one SEO packのどちらかのプラグインを導入することで削除できるようです。
ひとまずすでにindexされてしまっている状態ですので、プラグインの導入のみでは防げないと判断。そこでfeedの場合、XML形式ということからX-Robots-Tagというヘッダ情報へnoindexをつけるやり方を試みました。以下コードをfunctions.phpへ記述します。


add_action('template_redirect',function(){
    if ( is_feed() && headers_sent() === false ) {
         header( 'X-Robots-Tag: noindex, follow', true );
    }
});

 

X-Robots-Tagへnoindexが正しくついているか確認

ヘッダ情報ですので、実際にリクエストを出し、その結果を確認するといいでしょう。
確認方法はGoogle Chromeなどブラウザの検証ツールから『Request Header』を確認してみましょう。

ここではGoogle Chromeで解説しますが、開いているwebページで右クリック、検証ツールを呼び出したら
『Network』タブを開き、F5で再読み込みをかけます。

すると以下画像にもありますが、『Name』という箇所にリクエストが順に並びますので『feed』をクリックしてください。
その中でResponse Headers内、『X-Robots-Tag』という箇所でnoindexと表記されていればOKです1

その他気になったのでheadタグ内のfeedもカット

あとは何も対応していないテーマとかですと記事のfeedが以下のようにhead内へ出力されます。

これも不要なのでfunctions.phpへ以下を記述します。


function ws_head_cleanup() {

    remove_action( 'wp_head', 'feed_links', 2 );
    remove_action( 'wp_head', 'feed_links_extra', 3 );
    remove_action( 'wp_head', 'rsd_link' );
    remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'feed_links', 2 );
    remove_action( 'wp_head', 'feed_links_extra', 3 );
    remove_action( 'wp_head', 'rsd_link' );
    remove_action( 'wp_head', 'wlwmanifest_link' );
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );

    global $wp_widget_factory;

    remove_action( 'wp_head',
        array(
            $wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
            'recent_comments_style',
        )
    );
}

add_filter( 'init', 'ws_head_cleanup', 10 );

関数名の『ws_head_cleanup』などは適宜変更ください。

一旦放置して様子を見ることにします。

Search Consoleを通じてRobotを呼んでもいいですが、一旦このまま様子を見てみたいと思います!

結果はわかりしだい記述していきます〜

以上Yeah-Manでした!