WordPressでrobots.txtの内容を追加・変更する方法

— robots_txtフィルターフックによる複数Disallow設定まで解説 —

検索エンジンにサイトを正しく認識してもらうために重要なのが robots.txt です。
WordPressサイトでも robots.txt を適切に設定することで、検索エンジンのクローラーに対して

  • クロールしてよい場所
  • クロールしてほしくない場所

を指示することができます。

この記事では WordPressでrobots.txtを変更する方法と、
robots_txtフィルターフックを使って複数ディレクトリをDisallowに設定する方法を解説します。


robots.txtとは

robots.txtは、検索エンジンのクローラーに対して
クロールの可否を指示するテキストファイルです。

通常はサイトのルートに配置します。

https://example.com/robots.txt

検索エンジンはサイトにアクセスするとまずこのファイルを確認し、
クロールの対象範囲を判断します。


robots.txtの基本構文

robots.txtの基本的な記述例です。

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://example.com/sitemap.xml

意味

項目説明
User-agent対象クローラー
Disallowクロール禁止
Allowクロール許可
Sitemapサイトマップ

WordPressのrobots.txtの特徴

WordPressでは robots.txt が存在しない場合でも
仮想robots.txt が自動生成されます。

例えば

https://example.com/robots.txt

にアクセスすると次のような内容が表示されます。

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

つまり

  • robots.txtが存在しなくても出力される
  • 変更するにはWordPress側で制御できる

という特徴があります。


WordPressでrobots.txtを変更する方法

WordPressでは主に次の方法があります。

  1. robots.txtファイルを設置
  2. SEOプラグインを使用
  3. robots_txt フィルターフックを使用

この記事では 3番目の方法を中心に解説します。


robots_txtフィルターフックとは

WordPressには robots_txt フィルターフック が用意されています。

このフックを使うことで

  • WordPressが生成するrobots.txt
  • その出力内容

PHPで変更できます。


robots_txtでrobots.txtを追加する基本コード

テーマの functions.php などに次のコードを追加します。

function custom_robots_txt($output, $public) {

    $output .= "Sitemap: https://example.com/sitemap.xml\n";

    return $output;
}

add_filter('robots_txt', 'custom_robots_txt', 10, 2);

このコードでは

Sitemap

の行を robots.txt に追加しています。


robots_txtで複数ディレクトリをDisallowに設定する方法

複数のディレクトリをクロール禁止にする場合は、
配列でディレクトリを管理すると安全です。

例:

function custom_robots_txt($output, $public) {

    $disallow_dirs = array(
        '/wp-admin/',
        '/wp-includes/',
        '/private/',
        '/tmp/',
        '/test/'
    );

    foreach ($disallow_dirs as $dir) {
        $output .= "Disallow: {$dir}\n";
    }

    $output .= "Allow: /wp-admin/admin-ajax.php\n";
    $output .= "Sitemap: https://example.com/sitemap.xml\n";

    return $output;
}

add_filter('robots_txt', 'custom_robots_txt', 10, 2);

このコードのポイント

① Disallow対象を配列で管理

$disallow_dirs

で管理することで

  • ディレクトリ追加
  • 削除
  • 管理

が簡単になります。


② foreachでrobots.txtを生成

foreach ($disallow_dirs as $dir)

により

Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /private/
Disallow: /tmp/
Disallow: /test/

が自動生成されます。


出力されるrobots.txtの例

上記コードを使用すると、最終的に次のrobots.txtが生成されます。

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /private/
Disallow: /tmp/
Disallow: /test/

Allow: /wp-admin/admin-ajax.php

Sitemap: https://example.com/sitemap.xml

robots_txtを使うメリット

メリット内容
FTP不要WordPressのみで設定可能
コード管理Git管理しやすい
環境ごと制御条件分岐可能

例えば

if (WP_ENV === 'development') {
    $output .= "Disallow: /\n";
}

のように
開発環境だけクロール禁止にすることもできます。


robots.txt設定時の注意点

次の設定はサイト全体をクロール禁止にします。

User-agent: *
Disallow: /

本番サイトでは絶対に設定しないようにしましょう。


robots.txtの確認方法

robots.txtは次のURLで確認できます。

https://example.com/robots.txt

また
Google Search Console
でもクロール設定を確認できます。


まとめ

WordPressでrobots.txtを制御する方法は次の3つです。

方法特徴
robots.txtファイル設置最も一般的
SEOプラグイン管理画面で編集
robots_txtフックWordPressコードで管理

特に robots_txtフィルターフックを使う方法

  • WordPressコードとして管理できる
  • Gitで管理できる
  • 環境ごとの設定が可能

というメリットがあります。

複数ディレクトリをDisallowする場合は
配列 + foreachで出力する方法が最も安全で管理しやすい実装になります。

コメント

タイトルとURLをコピーしました