let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【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_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
【タグ】-

関連記事