WordPress標準のサイトマップで特定のカテゴリー・タグページを除外する方法【v5.5以降】

WordPress5.5から標準機能でサイトマップが利用できるようになりました。

WordPress標準のサイトマップ機能

以下のURLにアクセスすれば標準でXMLサイトマップが出力されます。

https://ドメイン/wp-sitemap.xml

パーマリンクが「基本」の場合はこちら。

https://ドメイン/index.php?sitemap=index

コアファイルを見てみると、サイトマップ出力もフィルターフックである程度制御出来るようになっていました。

ですので「サイトマップにnoindexにしたいカテゴリー・タグページを出力しない」なんて処理を加えることができます。

以下でその方法を説明します。

スポンサーリンク
レクタングル(大)広告

主な手順

サイトマップから、特定の「カテゴリー・タグページ」を出力しない処理を追加するには、以下の手順を行います。

  1. functions.php等にコードをコピペ
  2. 除外するカテゴリー・タグIDを指定する

基本的に、コードをコピペして除外したいIDを追加するだけです。

functions.php等にコードをコピペ

まずテーマでカスタマイズする場合は、子テーマのfunctions.phpに以下のコードをコピペしてください。

サイトマップのカテゴリー・タグページを変更するためのフック(wp_sitemaps_taxonomies_query_args)は、こんな感じで指定されています。

wp_sitemaps_taxonomies_query_args

この記事を執筆時の場所はこちら

ここで変更した$args配列からWP_Term_Queryデータベースにクエリを発行することで、出力を制御します。

new WP_Term_Query

今回は、WP_Term_Queryに設定する$args配列に除外IDを指定することで、サイトマップに出力しないようにしています。

除外設定以外にも$args配列を変更することで、ある程度自由にサイトマップ出力を制御することが可能です。

WP_Term_Query関数を利用するものなので、この関数を使ったことがあれば、問題なく利用できるかと思います。WP_Queryと同じような使い方です。

詳しくは、以下を参照してください。

参考 WP_Term_Query | Class | WordPress Developer Resources

参考 WP_Term_Query::__construct() | Method | WordPress Developer Resources

除外する投稿IDを指定する

あとは、コピペしたコードの中の以下の「カテゴリー・タグID」を変更するだけです。

カテゴリーID、タグIDそれぞれは、配列形式で指定します。

カテゴリーIDの取得方法

「カテゴリーID」を取得するには、カテゴリーページ編集画面のアドレスにあるtag_IDの値を取得してください。

カテゴリー編集画面からカテゴリーIDの取得

カテゴリーのIDであっても、tag_IDの値になります。

タグはIDの取得

「タグID」を取得するには、タグページ編集画面のアドレスにあるtag_IDの値を取得してください。

タグ編集画面からタグIDの取得

カテゴリーであっても、タグであってもtag_IDの値を取得します。

まとめ

今回のカスタマイズは、わざわざカスタマイズしたとしても、SEOに与える影響はほぼほぼないのではと推測します。

なので、「カテゴリがnoindexになっているんだから、サイトマップにも出力したくない」といったように、厳密に指定したい場合向けかもしれません。

ただ、クエリの指定方法によっては、様々な出力にできることから応用すれば、ある程度自由なサイトマップ出力は果たせるかと思います。