WordPress 5.5 から標準機能として XMLサイトマップが追加されていて、WordPress のドメイン/wp-sitemap.xml でアクセスすると XMLサイトマップが表示されます。
この XMLサイトマップを無効にする場合は、functions.php にソースコードを記述するか、プラグインにて対処が可能ですが、この記事では functions.php に記述する方法をいくつかまとめます。
WordPress 標準 XMLサイトマップ自体を無効にする
WordPress のドメイン/wp-sitemap.xml そのものを無効にする場合は、以下の一行を functions.php に記述します。
add_filter( 'wp_sitemaps_enabled', '__return_false' );
ソースコード適用後は WordPress のドメイン/wp-sitemap.xml が 404 not found になります。
特定のサイトマップだけを無効にする
WordPress 標準 XMLサイトマップは使いたいけど、特定の XMLサイトマップだけを除外したい。
その場合には、フィルターフック wp_sitemaps_add_provider / wp_sitemaps_register_providers / wp_sitemaps_taxonomies などを利用すれば、特定の XMLサイトマップのみ無効にすることが可能です。
投稿者(ユーザー)のサイトマップを無効にする
WordPress のドメイン/wp-sitemap-users-1.xml のようなアドレスの投稿者(ユーザー)のサイトマップを無効にする場合は、フィルターフック wp_sitemaps_add_provider / wp_sitemaps_register_providers を利用します。
// サイトマップ wp-sitemap.xml から投稿者(ユーザー)を無効にする
if ( !function_exists( 'disabled_wp_sitemaps_add_provider_users' ) ) {
function disabled_wp_sitemaps_add_provider_users( $provider, $name ) {
if ( 'users' === $name ) {
return false;
}
return $provider;
}
add_filter( 'wp_sitemaps_add_provider', 'disabled_wp_sitemaps_add_provider_users', 10, 2 );
}
if ( !function_exists( 'disabled_wp_sitemaps_register_providers_users' ) ) {
function disabled_wp_sitemaps_register_providers_users( $providers ) {
unset( $providers['users'] );
return $providers;
}
add_filter( 'wp_sitemaps_register_providers', 'disabled_wp_sitemaps_register_providers_users' );
}
※ wp_sitemaps_register_providers はなくてもいいのかも?ですが、公式のドキュメント(User Contributed Notes)の サンプルコードを参考にしています。
カテゴリーやタグのサイトマップを無効にする
WordPress のドメイン/wp-sitemap-taxonomies-category-1.xml や WordPress のドメイン/wp-sitemap-taxonomies-post_tag-1.xml など、カテゴリーやタグ(タクソノミー)のサイトマップを無効にする場合は、フィルターフック wp_sitemaps_taxonomies を利用します。
// サイトマップ wp-sitemap.xml からカテゴリーを無効にする
if ( !function_exists( 'disabled_wp_sitemaps_taxonomies_category' ) ) {
function disabled_wp_sitemaps_taxonomies_category( $taxonomies ) {
unset( $taxonomies['category'] );
return $taxonomies;
}
add_filter( 'wp_sitemaps_taxonomies', 'disabled_wp_sitemaps_taxonomies_category' );
}
// サイトマップ wp-sitemap.xml からタグを無効にする
if ( !function_exists( 'disabled_wp_sitemaps_taxonomies_post_tag' ) ) {
function disabled_wp_sitemaps_taxonomies_post_tag( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
}
add_filter( 'wp_sitemaps_taxonomies', 'disabled_wp_sitemaps_taxonomies_post_tag' );
}
投稿や固定ページのサイトマップを無効にする
WordPress のドメイン/wp-sitemap-posts-post-1.xml や WordPress のドメイン/wp-sitemap-posts-page-1.xml など、投稿や固定ページ(投稿タイプ)のサイトマップを無効にする場合は、フィルターフック wp_sitemaps_post_types を利用します。
// サイトマップ wp-sitemap.xml から投稿タイプ post を無効にする
if ( !function_exists( 'disabled_wp_sitemaps_post_types_post' ) ) {
function disabled_wp_sitemaps_post_types_post( $post_types ) {
unset( $post_types['post'] );
return $post_types;
}
add_filter( 'wp_sitemaps_post_types', 'disabled_wp_sitemaps_post_types_post' );
}
// サイトマップ wp-sitemap.xml から投稿タイプ page を無効にする
if ( !function_exists( 'disabled_wp_sitemaps_post_types_page' ) ) {
function disabled_wp_sitemaps_post_types_page( $post_types ) {
unset( $post_types['page'] );
return $post_types;
}
add_filter( 'wp_sitemaps_post_types', 'disabled_wp_sitemaps_post_types_page' );
}
今回のソースコードでは紹介していませんが、カスタム投稿タイプやカスタムタクソノミーもそれぞれ無効にできましたので、これらのパターンを覚えておいたらある程度は対応が可能なのかなと思いました。
以上ですが、WordPress 標準 XMLサイトマップを無効にする場合の参考になりましたら幸いです。
この記事を作成するにあたり、参考にした WordPress 公式ドキュメントを以下にリンクしますので、合わせてご確認ください。
参考情報
- Version 5.5 – Documentation – WordPress.org
- New XML Sitemaps Functionality in WordPress 5.5 – Make WordPress Core
- wp_sitemaps_add_provider – Hook | Developer.WordPress.org
- wp_sitemaps_taxonomies – Hook | Developer.WordPress.org
- wp_sitemaps_post_types – Hook | Developer.WordPress.org
コメント