【WordPress】標準搭載のサイトマップ(wp-sitemap.xml)をカスタマイズして項目追加やカットする方法
| 更新: 2024/04/16 | 2011文字
今回は、WordPress標準搭載のサイトマップ(wp-sitemap.xml)をカスタマイズします。デフォルト状態だと項目が少ない・余計な情報が出るなど難点が多いのですが、その点を改善していってみましょう。
目次
wp-sitemap.xml、もともとの状態(難点あり)
まず、元々のwp-sitemap.xmlで、難点かな、と思うところを紹介します。 google サーチコンソールに送ったとき、エラー出てたんですね(笑)プラグインで出力したもの(/sitemap.xml)は認識されました。
おそらくハネられている理由としては、認識されたものと形式が違うというのが考えられます。(変更頻度changefreqや優先度priorityが表示されていない)
また、形式違いという難点のほか、サイトマップにユーザー情報が含まれるというのもあります。ユーザー名を隠したい場合は、カスタマイズしてやらないとなりませんね。
wp-sitemap.xmlをカスタマイズするコードとフック解説
コード例(実際はphpタグ内をfunctions.phpに記載)
コードはこんな感じになりました。『customWpSitemapClass』というのにサイトマップ系をまとめています。前も管理人がちょっとやってたのと同様、コンストラクタで複数のフックを同時にかける感じになります。
また、GoogleChromeLabsという団体のgithubで、標準搭載のサイトマップに関するフィルターフックがまとめられていたので、これを参考に作りました(readme)というところ。あとは、ポイントになりそうなところをいくつか解説していきます。
wp-sitemaps(GoogleChromeLabs)
https://github.com/GoogleChromeLabs/wp-sitemaps
フロントページのサイトマップ(wp_sitemaps_posts_show_on_front_entryフック)
フロントを固定ページではなくて『一覧』にしてたからだと思うんですが、固定ページサイトマップ・フロントに優先度や変更頻度が入らなかったので作りました。更新時間は、最初の1件の時間をget_the_modified_timeで取得。
通常投稿と固定ページ(wp_sitemaps_posts_entryフック)
wp_sitemaps_posts_entryフックで通常投稿や固定ページサイトマップに追加できます。post_typeで優先順位を切り替えが可能です。
カテゴリのサイトマップ(wp_sitemaps_taxonomies_entryフック)
カテゴリページに使うものにはposts_entryフックではなく『wp_sitemaps_taxonomies_entry』を使用します。作り方は通常投稿・固定と同様です。
各種出力カット
特定のカスタム投稿カットは『wp_sitemaps_post_types』、ユーザーページは『wp_sitemaps_add_providerでreturn false』、タグ及びカスタムタクソノミーサイトマップ出力カットは『wp_sitemaps_taxonomies』で対応しました。
サイトマップ出力例
それではサイトマップ出力を確認していってみましょう。 以前は出なかった投稿頻度や優先度が出力されるように。
カテゴリーのサイトマップも投稿頻度や優先度の出力ok
固定ページでは、フロントページの優先度が最初出ませんでしたが、別途wp_sitemaps_posts_show_on_front_entryでフロント用をエディットしたので、こちらもok。
以前はgoogleサーチコンソールで読み込まなかったwp-sitemap.xmlですが、カスタマイズしたところ読み込みができました。
あとがき・まとめ
- 標準搭載のサイトマップ(wp-sitemap.xml)では、ユーザー情報が含まれる、変更頻度や優先がない、サーチコンソールが読まないという難点がある
- wp_sitemaps_〇〇〇という形の、サイトマップ変更に使えるフックが、豊富に用意されている
まとめると、こんなところでしょうか。フロントには出てこないので地味な機能でしたが、サイトマップ系プラグインを外せたので、構成ファイル数が少なくなりました。
【カテゴリ】- WordPressファンクションetc
【タグ】- WordPress