Tips

WordPress 5.5 で実装されたサイトマップ自動生成機能

投稿日:

1. WordPress のサイトマップ自動生成機能

WordPress 5.5 から、サイトマップ生成機能が標準で搭載されました。

例えば、本サイト(WordPress で構築しています)の場合、

https://rs.fitallright.com/sitemap.xml

にアクセスすると、

https://rs.fitallright.com/wp-sitemap.xml

にリダイレクトされ、サイトマップインデックスが表示されます。

XML サイトマップ
XML サイトマップ

本サイトの場合、5つのサイトマップが出力されていました(現在は変更しています)。

2. サイトマップファイル名について

このサイトマップのファイル名は、以下のフォーマットになっているようです。

wp-sitemap-{sitemap provider}-{subtype}-{page}.xml

sitemap provider

サイトマップを提供する sitemap provider には、標準で

  • posts(投稿や固定ページをまとめたもの)
  • taxonomies(タクソノミー)
  • users(ユーザー投稿)

の3つが用意されており、それぞれ subtype を持っています(users にはありません)。

subtype

sitemap provider「posts」の subtype は、関数リファレンス/get post types – WordPress Codex 日本語版 によると、以下の種類があります。

  • post: 投稿
  • page: 固定ページ
  • attachment: 添付ファイル(subtype からは除外されています)
  • revision: リビジョン
  • nav_menu_item: ナビゲーションメニュー(バージョン 3.0 以降)
  • カスタム投稿タイプ: バージョン 3.0 以降

sitemap provider「taxonomies」の subtype は、タクソノミー | WordPress.org 日本語 によると以下の種類があります。

  • category: カテゴリー
  • post_tag: タグ
  • link_category: リンクカテゴリー
  • post_format: 投稿フォーマット

ファイル名をまとめる

各サイトマップのファイル名を表にまとめました。

ファイル名 sitemap provider subtype
wp-sitemap-postspost-1.xml posts post
wp-sitemap-postspage-1.xml posts page
wp-sitemap-taxonomiescategory-1.xml taxonomies category
wp-sitemap-taxonomiespost_tag-1.xml taxonomies post_tag
wp-sitemap-users-1.xml users なし

3. 特定のサイトマップを出力しない設定

特定のサイトマップを出力させない設定方法については、New XML Sitemaps Functionality in WordPress 5.5 – Make WordPress Core に載っていますが、その中のいくつかの方法についてもう少し分かりやすく説明します。

設定を記述するファイルは、使用しているテーマフォルダ直下の functions.php ファイルです。

特定の sitemap provider のサイトマップを出力しない

wp_sitemaps_add_provider フィルターを利用します。

以下の $name に sitemap provider の名前がセットされてくるので、除外したい名前と一致したら false を返します。

add_filter(  
    'wp_sitemaps_add_provider',  
    function( $provider, $name ) {  
        if ( 'users' === $name || 'taxonomies' === $name ) {
            return false;  
        }  
        return $provider;  
    },  
    10,  
    2  
);

このコードでは、’users’ と ‘taxonomies’ の2種類を除外しています。

除外されるサイトマップ(その1)
除外されるサイトマップ(その1)

特定の subtype のサイトマップを出力しない

sitemap provider が posts の場合

wp_sitemaps_post_types フィルターにフックする関数に配列が渡されるのですが、この配列に対して、除外したい subtype 名がキーとなっている要素を破棄します。

subtype ‘page’ を出力させない場合は、以下のようにコードを記述します。

add_filter( 
    'wp_sitemaps_post_types', 
    function( $post_types ) { 
        unset( $post_types['page'] ); 
        return $post_types; 
    } 
);
除外されるサイトマップ(その2)
除外されるサイトマップ(その2)

sitemap provider が taxonomies の場合

wp_sitemaps_taxonomiesフィルターにフックする関数に配列が渡されるのですが、この配列に対して、除外したい subtype 名がキーとなっている要素を破棄します。

subtype ‘post_tag’ を出力させない場合は、以下のようにコードを記述します。

add_filter( 
    'wp_sitemaps_taxonomies', 
    function( $taxonomies ) { 
        unset( $taxonomies['post_tag'] ); 
        return $taxonomies; 
    } 
);
除外されるサイトマップ(その3)
除外されるサイトマップ(その3)

4. サイトマップのURLを指定する

検索エンジンのクローラーに、サイトマップのURL を伝えるにはいくつかの方法がありますが、robots.txt ファイルに指定するのが簡単です。

例えば、以下のように記述します。

Sitemap: https://rs.fitallright.com//sitemap.xml

詳しくは、sitemaps.org – プロトコル を参照してください。

5. 参考

-Tips

執筆者:fitallright

関連記事

WordPress に Font Awesome 5 を導入する方法

WordPress に Font Awesome 5 を導入する方法について説明します。 目次1. はじめに本ページで説明する方法について2. 導入手順「SVG with JS」の導入手順「Web F …

Webサイトで絵文字を使う

Webサイトに絵文字を使う方法について説明します。 目次1. 絵文字を探す2. HTML内で絵文字を使う2つの方法1. 絵文字をそのままコピー&ペーストする方法2. 数値文字参照を使う方法3. Wor …

WordPress のウィジェット内項目の先頭にアイコンを表示する方法(Font Awesome 5 を利用)

WordPress ではサイドバーなどに ウィジェットを作成することができます。 ウィジェット内の各項目の先頭にアイコンを表示する方法はいろいろあると思いますが、本ページでは Font Awesome …

no image

ロリポップ!マネージドクラウドを使ってみた感想と記録

ここでは、ロリポップ!マネージドクラウド を使ってみた時のメモを書いていきます。(2018年10月時点) 目次疑問点ディスク容量についてメモリについて転送量の目安メモコンテナの起動時間SSHログイン後 …

Windows で、.htaccess(先頭がドットで始まり拡張子を持たないファイル名の)ファイルを作成する方法

レンタルサーバーでは、.htaccess ファイルを使ってサーバー側の設定を変更することが許されているものが多くあります。 そこで、この機能を利用しようと思い Windows のエクスプローラー上で …

ロリポップ!「スタンダードプラン」
さくらのレンタルサーバ「スタンダードプラン」