WordPress XML サイトマップに lastmod を追加する
WordPress 5.5 から XML サイトマップが example.com/wp-sitemap.xml として自動出力される様になりました。
しかし、実装されたネイティブの XML サイトマップにはデフォルトで<lastmod>が出力されません。
WordPress の開発者ページには以下のサンプルコードが紹介されていました。
add_filter( 'wp_sitemaps_posts_entry', function( $entry, $post ) {
$entry['lastmod'] = $post->post_modified_gmt;
return $entry;
}, 10, 2);
これを functions.php に記述すると確かに wp-sitemap.xml の投稿と固定ページリストに最終更新日が出力されています。
しかし、この wp-sitemap.xml を Google サーチコンソールに送信すると、サイトマップ自体は読み込めるもののステータスがエラーになります。
ステータスエラーの原因は lastmod の値が ISO 8601 による日時表記でない為。
ISO 8601 形式の日時表記にするには
$post->post_modified_gmt;
の部分を修正すれば良さそうです。
add_filter( 'wp_sitemaps_posts_entry', function( $entry, $post ) {
$entry['lastmod'] = get_the_modified_time('c', $post);
return $entry;
}, 10, 2);
修正後 XML サイトマップを Google サーチコンソールに再送信するとステータスは「成功しました」になり、他にエラーも出ていない様です。
又、wp-sitemap.xml のページには最終更新日が ISO 8601 形式で表記されているのが確認出来ます。