この記事は、Jetpack バージョン 4.4.2 を対象としています。バージョン 4.8 からサイトマップの処理は大幅に変更されています。ご注意ください。
Jetpack by WordPress.com プラグイン(以降「Jetpack」と表記)に、XML サイトマップを生成する機能がありますが、ドキュメントに詳しい解説がなく不明な点があったのでコードを追って調べてみたので備忘録として残しておきます。
調べたことを列記しておきます。
- 管理画面に設定項目はなく有効にするだけで生成されるようになります。それ以降は自動で生成されます。
- サイトマップが更新されるタイミングは、投稿や固定ページおよび Jetpack で設定したカスタム投稿タイプの公開時、ゴミ箱へ移動した時、削除された時、前回の更新から24時間経過した時です。
- サイトマップのコンテンツは、ウェブだけではなく画像とモバイルにも対応しています。画像はコンテンツ内の画像およびアイキャッチ画像が対象です。
- Google ニュース サイトマップに対応しています。
- デフォルトでは Jetpack で設定したカスタム投稿タイプ以外の、他のカスタム投稿タイプはサイトマップに含まれません。しかし、カスタム投稿を追加するためのフックが用意されています。
生成される XML サイトマップ コンテンツは最新の 1000 エントリまでに制限されています。(バージョン 4.8 からこの制限は解除(ニュースサイトを除く)されました)
カスタム投稿を追加する方法
カスタム投稿を追加するために、jetpack_sitemap_post_types フックと jetpack_sitemap_news_sitemap_post_types フックが用意されています。
下記は、カスタム投稿タイプ foo と bar を追加するコードの例です。
function my_jetpack_sitemap_post_types( $post_types ) {
$post_types[] = 'foo';
$post_types[] = 'bar';
return $post_types;
}
add_filter( 'jetpack_sitemap_post_types', 'my_jetpack_sitemap_post_types' );
add_filter( 'jetpack_sitemap_news_sitemap_post_types', 'my_jetpack_sitemap_post_types' );
なお、投稿や固定ページは公開時に直ちに反映されるようになっていますが、カスタム投稿は反映されるまで最大24時間かかります。直ちに反映させるには、jetpack_sitemap_handle_update 関数をコールしておく必要があります。
最後に
生成される XML サイトマップ コンテンツは最新の 1000 エントリまでに制限されているのは、サーバの負荷を考えての制限のようですが、少ないような気がしますね・・・。
なお、コードをざっと追っただけなので間違いがあるかもしれません。その場合はコメントしてもらえると助かります。