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_posts_query_args)は、こんな感じで指定されています。

wp_sitemaps_posts_query_args

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

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

 new WP_Query

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

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

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

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

参考 関数リファレンス/WP Query – WordPress Codex 日本語版

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

あとは、コピペしたコードの中の以下の「投稿・固定ページID」を変更するだけです。

配列形式で指定します。

「投稿・固定ページID」を取得するには、投稿・固定ページ編集画面のアドレスにあるpostの値を取得してください。

投稿・固定ページIDを取得する

まとめ

こんな感じでWordPress5.5からは、標準でサイトマップ機能が追加され、カスタマイズである程度変更できるようになっているようです。

投稿・固定ページをnoindexにしたい場合は、ページ内にnoindexタグさえ入っていれば、サイトマップ対応せずとも、Google側が反映してくれるとは思います。

ただ、noindex目的以外でも「どうしてもサイトマップの投稿出力を変更したい」なんて場合は、ある程度自由がきくので、今回の方法で変更できるかと思います。