Menu


WordPress バージョン 5.5 以降 の 標準 XMLサイトマップを無効にする

2024年05月11日

WordPress 5.5 から標準機能として XMLサイトマップが追加されていて、WordPress のドメイン/wp-sitemap.xml でアクセスすると XMLサイトマップが表示されます。

WordPress 標準 XMLサイトマップ 無効

この XMLサイトマップを無効にする場合は、functions.php にソースコードを記述するか、プラグインにて対処が可能ですが、この記事では functions.php に記述する方法をいくつかまとめます。

WordPress バージョン 6.5.3 にて確認しています。テーマファイルを編集する場合はバックアップをしてから作業されることをお勧めします。

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 公式ドキュメントを以下にリンクしますので、合わせてご確認ください。

参考情報

広告