WordPress 5.5 から追加された標準機能として、XMLサイトマップが自動で出力されるようになっています。
URLは https://example.com/wp-sitemap.xml
となっており、WordPressのドメイン直下に「wp-sitemap.xml」が出力されます。
このXMLサイトマップを無効にしたい場合、プラグインで対応するか、functions.php にソースコードを記述するか、どちらかの方法に頼ることになります。
なるべくプラグインは増やしたくないので、今回は functions.php を使う方法をメインに解説していきます。
標準XMLサイトマップを無効化
標準のXMLサイトマップ機能を無効化するには、functions.phpに以下のコードを記述します。
add_filter( 'wp_sitemaps_enabled', '__return_false' );
このコードを追加後に wp-sitemap.xml にアクセスすると、404ページとなりXMLサイトマップが表示されなくなります。
他の方法
先に紹介したコードの他に、次のような処理も存在します。
remove_action( 'init', 'wp_sitemaps_get_server' );
こちらはWordPressが実際にサイトマップを提供する関数自体を機能させなくする、やや直接的なテクニックです。
両者の違い
- add_filter を使う方法は、WordPressのサイトマップ機能を安全に無効化するための標準的な方法であり、簡単です。
- remove_action を使う方法は、より直接的にサイトマップを出力するプロセスを中断させる方法で、若干上級者向けです。
推奨方法
一般的には前者「add_filter」を使用することをお勧めします。この方法は公式にサポートされており、簡単で安全です。
一方、後者「remove_action」は将来的にWordPressの内部の実装が変わった場合に動作しなくなる可能性があるそうです。
推奨:
add_filter( 'wp_sitemaps_enabled', '__return_false' );
ワードプレス標準のXMLサイトマップ機能の危険性
ワードプレス標準ので出力されるXMLサイトマップには、投稿者アーカイブのURLも含まれています。
投稿者アーカイブのURL内にログインアカウント名が含まれているため、XMLサイトマップでログインアカウント名が公開されていることになります。
標準のXMLサイトマップ機能では、細かいURLの制御ができないため、投稿者アーカイブのURLだけを個別に除外する設定ができません。
ユーザー名は管理画面のログインに必要となる重要なデータで、悪質な攻撃者はこれを利用して不正ログインを試みる可能性があります。
セキュリティ対策の観点からみても、標準のXMLサイトマップ機能は無効化しておいたほうが良いというのが弊社の見解です。