この記事をシェアする

WordPressの場合、ダッシュボードの「プライバシー設定」にあわせて自動でrobots.txtを生成してくれます(自分で robots.txt を設置した場合はそちらが優先されます)。

細かな設定を行いたい場合は自分で robots.txt を作成した方が早いかも知れませんが、当該部分にフィルターが用意されているので、プラグインやテーマでカスタマイズすることも可能です。

2016.6.28 いい加減ver4.5にもなったので改稿しました。

自動生成の robots.txt

ダッシュボードの設定によって生成される robots.txt の中身が異なります。

「検索エンジンによるサイトのインデックスを許可する」にしていた場合

Disallow: {WordPressの設置ディレクトリ}/wp-admin/
Allow: {WordPressの設置ディレクトリ}/wp-admin/admin-ajax.php

「検索エンジンによるサイトのインデックスを許可しない」にしていた場合

Disallow: /

※この他にプラグインなどで追加される場合もあります。

実行される関数は do_robots() です。

do_robots()

特定のディレクトリをクロールさせたくない場合

ユーザーがログインしないと閲覧できないコンテンツが含まれている場合など、一部のディレクトリをクロールさせたくない場合なども、フィルターを使って Disallow: の行を増やせば可能です。

wokamotoさんから指摘があったのでソースコード変更
Re: WordPressで自動生成されるrobots.txt

惜しい、Function Reference/do robots にもあるように do_robotstxt アクションフックが直前で呼ばれるので、そのアクションフックで robots_txt フィルターフックを登録したほうが確実。

do_robotstxt

robots_txt

add_action('do_robotstxt', function(){
    add_filter('robots_txt', function($output) {
        $public = get_option( 'blog_public' );
        if ( '0' != $public ) { // open
            $output .= "Disallow: /members/n";
        }
        return $output;
    }
}

今回は勉強もかねてWordPressのフィルターを利用しましたが、自分で robots.txt を設置した場合はそちらが優先されます。
ただし、プラグインなどでこのフィルターを利用するものもあるので、手法を覚えておくだけでも良いでしょう。

この記事をシェアする