WordPress のXMLサイトマップ機能を止める方法【タグ・固定ページだけの除外方法も解説】

WordPress で XML サイトマップが勝手に生成されるようになったけど、止める方法はあるの?あと、利用する場合にタグやカテゴリーだけを除外する方法もある?

 

そんな疑問にお答えします。

本記事の内容

  • XML サイトマップ生成機能を停止させる方法
  • タグや固定ページだけを除外する方法
  • Lastmod などを含める方法
 

WordPress 5.5 から XML サイトマップの生成機能が備わったので、プラグインを利用しなくても送信できるようになりました。

ただ、現状としてほとんどの人はプラグインを使って従来のサイトマップを送信していると思います。
 

そこで、新しいサイトマップ(wp-sitemap.xml)の生成機能を停止させたりする設定方法などを紹介します

XML サイトマップの生成機能を停止させる方法

WordPress XML サイトマップ

 

運用中のサイトをいくつか使って確認したところ、サイトマップを生成するプラグイン(Google XML Sitemapsなど)を有効にしていると新しいサイトマップは生成されていませんでした。

ただ、他のプラグインでは確認できていないので、もしプラグインを継続して使いたい場合には生成機能を停止させておいた方が安心でしょう
 

停止させる手順は、以下のコードを function.php などに追記するだけ。

PHP
add_filter( 'wp_sitemaps_enabled', '__return_false' );
 

これで、新しい XML サイトマップの生成機能を完全に停止させることができます。

タグや固定ページを除外する方法

WordPress XML サイトマップ

 

新しいサイトマップ(wp-sitemap.xml)を利用すると、全ての URL が含まれた状態でサイトマップを送信します
 

なので、これまでプラグインなどを使ってきた人からすると、タグや固定ページまでも送信されるのは嫌かもしれませんね。

でも、フィルターフックを利用すればそれらを除外することも可能になります

投稿記事のタグを除外する

投稿記事のタグを除外したい場合には、下記のコードを function.php などに追記します。

PHP
add_filter(
    'wp_sitemaps_taxonomies',
    function( $taxonomies ) {
        unset( $taxonomies['post_tag'] );
        return $taxonomies;
    }
);
 

これで、タグだけが送信されなくなります。

固定ページを除外する

固定ページを除外したい場合には、下記のコードを同じく function.php などに追記します。

PHP
add_filter(
    'wp_sitemaps_post_types',
    function( $post_types ) {
        unset( $post_types['page'] );
        return $post_types;
    }
);
 

これで、固定ページだけが送信されなくなります。

記事の更新日なども送信したい場合

WordPress XML サイトマップ

 

これから解説する内容に関しては難しいところなんですが、まず WordPress 側ではこんなことを言っています。

The sitemaps protocol specifies a certain set of supported attributes for sitemap entries. Of those, only the URL (loc) tag is required. All others (e.g. changefreq and priority) are optional tags in the sitemaps protocol and not typically consumed by search engines, which is why WordPress only lists the URL itself.
引用元:New XML Sitemaps Functionality in WordPress 5.5

 

簡単に訳すと、

サイトマップには URL(loc)だけが必要で、それ以外のタグはただのオプションなので WordPress としては付けていません。

だそうです。
 

ここで気になるのが、「更新日とかは?」ということ。
 

以前 Google の方が更新日も重要としている趣旨の発言をしたことで、「更新日は重要である」ということが拡散されました。

リョウ

ただこの発言も数年前のものなので、もしかしたら今となっては違うかもしれないんですけどね。

lastmod などのタグも送信した場合

WordPress 5.5 では、wp_sitemaps_posts_entrywp_sitemaps_users_entrywp_sitemaps_taxonomies_entry のフィルターを使って、changefreqprioritylastmod のタグを含めることができます。

更新日を追加した例
add_filter(
    'wp_sitemaps_posts_entry',
    function( $entry, $post ) {
        $entry['lastmod'] = $post->post_modified_gmt;
        return $entry;
    },
    10,
    2
);
 

もし更新日(lastmod)なども含めたい場合には、利用してみてください。

まとめ:好きなサイトマップを選ぼう

以上で、XMLサイトマップ機能を停止させる方法などを紹介しました。
 

現段階では、Wordpress の XMLサイトマップ生成機能をそのまま利用した方が良いのか、機能を停止させてプラグインを利用した方が良いのかはまだ分かりません。

このブログ( = bryog.com )ではすでにプラグインを停止させて、新しい XMLサイトマップ(wp-sitemap.xml)で実験してみている状態です。

リョウ

もし面白い変化などがあれば、この記事に追記します。