検索エンジン向けに公開されているページの一覧を出力するサイトマップ。Google Search Consoleなどへ登録するとSEOに役立つとされています(真贋は不明ですがやらないよりはいいのかもというのが個人の見解です)。
WordPress 5.5から機能が追加されたのは知っていたものの、それまで使用していた有名な「XML Sitemap & Google News」というプラグインを使用し続けていました。
でも..久しぶりにこのサイトのサイトマップはどうなってるかしら?と開いてみたら、年月ベースのページまではできていたものの、どの投稿タイプの詳細ページも空(何も表示されない)、そしてGoogle Search Consoleで確認すると認識しているページはゼロになっていました。
長くWordPressでサイト管理をしている方なら、このプラグインのみならず、過去に何度かサイトマップ生成に関するトラブルがあったのもご存じかと思いますが、今回も空白ページがなぜ生成されるのかについて調べたり、設定の見直しをしたり、パーマリンクのリフレッシュをしてみたものの解決しなかったこと、公式フォーラムでも言及されていないことから自身の管理サイトのみで発生してるのかも?とも考えましたが、いつの間にか不具合が出てるというのはとても気持ち悪いので、プラグインの使用を止め、WordPress標準のサイトマップ機能を使うことにしました。
まあサイトマップ自体は検索エンジンにきちんと認識されればいいというものだと自身は考えているので、標準仕様のままでもいいと思いますが、いろいろと調べるうちにいくつかカスタマイズする方法を見つけましたので、専用プラグインとの違いを含め、備忘録を兼ねて紹介しておきます。
サイトマップ生成プラグインとの違い
検索すると巷ではWordPress標準のサイトマップ生成機能は使えない!?といった意見が多く、それを鵜呑みにしてプラグインを使っているという方も多いでしょう。
そこで始めにWordPress標準のサイトマップ生成機能と専用プラグインの機能の違いについて触れておきましょう。
とはいえ、私はXML形式のサイトマップについて深く知っているわけでもありませんし、私自身プラグインとしては「XML Sitemap & Google News」しか使用したことがありませんから、ざっくりとした説明しかできないことを了承ください。
まず、当初WordPress標準のサイトマップ生成機能が使えないと言われた要因の1つである最終更新日が出力されないという点については、どこかのバージョン(少なくとも6.7以降)では解消されています。
次に前述したプラグインでは以下のような設定ができるようになっています。
- 優先度の指定ができる
- 年単位でリストを分けることができる
- 情報の中に画像の情報を入れることができる
- 投稿タイプやタクソノミーごとに出力するかどうかの設定ができる
- 複数のサイトのサイトマップを統合することができる
これらはWordPress標準のサイトマップ生成機能では標準装備されていません。ただし、これらの機能が必要なのかどうか、有用性があるのかどうかについては不明です。
違いとしてはざっとこんな感じですが、プラグインはサイトマップに精通している人がリリースしているのでしょうから、前述したようなトラブルが起きても納得できる方、不具合の解消ができる方はプラグインを使用したほうがいいかも知れませんね。
WordPress標準のサイトマップ機能のカスタマイズ例
作者一覧ページへの一覧出力を停止する
「wp-sitemap-users-1.xml」で出力される、その作者が公開したページの一覧(作者アーカイブ)へのリンクリストの出力を停止するには以下のコードを有効化しているテーマのfunctions.phpへ追加します。
function pwcn_remove_author_from_sitemap($provider, $name) {
return ($name == 'users') ? false : $provider;
}
add_filter('wp_sitemaps_add_provider', 'pwcn_remove_author_from_sitemap', 10, 2);
結構いろいろなページで「作者スラグがバレるのを防ぐ方法」として書かれていますが、正確にはこのリスト中のURLにユーザーアカウント名が含まれているという意味で、以下のページのようにして、ユーザースラグを変更する(表示画面上でユーザーアカウント名を別の文字列にする)措置をしていれば、特に制限する必要はないと思います
特定のタクソノミー一覧を出力しないようにする
タクソノミーとは分類のことで、WordPressの標準では「カテゴリー」と「タグ」がそれに当たり、コードを使うとカスタムタクソノミーという独自の分類をいくつも増やすこともできます。
「カテゴリー」や「タグ」ページへのリンクを出力しないようにすることは多分必要ないと思いますが、カスタムタクソノミーに関してはサイト管理側のみで使用するという機会もあると思います。そうした場合には、以下のコードを追加して出力しないようします。
function pwcn_remove_specific_taxonomy_from_sitemap($taxonomies) {
//必要な分だけ追加
unset($taxonomies['my_custom_taxonomy']);//カスタムタクソノミースラグ
return $taxonomies;
}
add_filter('wp_sitemaps_taxonomies', 'pwcn_remove_specific_taxonomy_from_sitemap');
特定の投稿タイプの一覧を出力しないようにする
WordPress標準の投稿タイプに「投稿」と「固定ページ」があり、コードを追加することでこうしたコンテンツの集まりをいくつでも作れるのが「カスタム投稿タイプ」です。
カスタム投稿タイプの中には前述のカスタムタクソノミーと同様、管理用に作成していたり、内容が補足的なものなのでサイトマップからは除外したいケースがあると思います。そうした場合には、以下のコードを追加して出力しないようにします。
function pwcn_remove_specific_post_type_from_sitemap( $post_types ) {
//必要な分だけ追加
unset( $post_types['my_posttype'] ); // 除外する投稿タイプのスラグ
return $post_types;
}
add_filter( 'wp_sitemaps_post_types', 'pwcn_remove_specific_post_type_from_sitemap' );
番外:WordPress標準のサイトマップ機能を無効にする
未確認ですが、恐らくサイトマップ生成用のプラグインのほとんどでは、標準のサイトマップを無効にした上で新たにプラグインの生成するサイトマップを出力しているかと思いますので、何もしなくても標準のサイトマップと競合することはないでしょう。
ただ、サイトマップ自体が不要、競合が起きてしまって不具合が出るといった場合には、以下のコードを使って標準のサイトマップ機能を無効にした方がいいケースもあるかも知れませんので、補足として掲載しておきます。
remove_action( 'init', 'wp_sitemaps_get_server' );
コメントを残す