WordPress5.5からXMLサイトマップを出力する機能が標準で追加されました。
Google XML Sitemapsとか別のプラグインを使ってXMLサイトマップを出力している場合が多いと思います。
そういったすでに使っている機能が重複しないよう、標準のXMLサイトマップ機能を無効にする方法をまとめておきます。
追加されたXMLサイトマップ機能
はじめに、新たに標準搭載されたXMLサイトマップ機能についての説明です。
XMLサイトマップ機能はWordPress5.5から自動で有効になっていて、wp-sitemap.xml
というファイル名でアクセスできます。
$ドメイン/wp-sitemap.xml
というURLにアクセスすると、下記のようなサイトマップが表示されます。
補足事項
wp-sitemap.xml
は正確にはサイトマップインデックスファイルです。
固定ページや投稿、著者といった種類別に分割された別のサイトマップファイルへのリンクが一覧表示されます。
何の用意をしなくてもXMLサイトマップが出力されるので便利そうにも感じますが、
標準のXMLサイトマップ機能にはごく基本的な機能しかなく、例えば以下のようなカスタマイズは出来ません。
- 「このページはサイトマップに含めたくない」といったページやアーカイブ毎の指定ができない。
-
lastmod
やchangefreq
、priority
といった要素を設定できない。
このような細かい制御もしたい場合には、現状ではプラグインでXMLサイトマップ機能を実装する必要があります。
プラグインを使用する場合には、機能が重複する標準のXMLサイトマップ機能は無効にしておきたいところです。
以下、無効化する方法について説明します。
標準のXMLサイトマップ機能を無効化する方法
標準のXMLサイトマップ機能を無効化するには、functions.php
に下記コードを追記します。
add_filter( 'wp_sitemaps_enabled', '__return_false' );
上記のコードを追加後にwp-sitemap.xml
にアクセスすると、404ページとなりXMLサイトマップが表示されなくなります。
上記のコードでは、見た目上ではXMLサイトマップが見られなくなりますが、XMLサイトマップ機能は有効になっています。
以下のコードを追記するとXMLサイトマップ機能自体を無効化することが出来ます。
remove_action( 'init', 'wp_sitemaps_get_server' );
上記のコードを追加後にwp-sitemap.xml
にアクセスすると、404ではなくTOPページが表示されるようになります。
標準のXMLサイトマップ機能の危険性
標準のXMLサイトマップ機能で出力されるXMLサイトマップには、投稿者アーカイブのURLも含まれています。
投稿者アーカイブのURL内にログインアカウント名が含まれているため、XMLサイトマップでログインアカウント名が公開されていることになります。
現時点では標準のXMLサイトマップ機能は細かい制御ができないため、投稿者アーカイブのURLだけ除外したりすることが出来ません。
ユーザー名は管理画面のログインに必要となる重要なデータです。不正ログインを試みるには大きな手掛かりになります。
あとはパスワードさえ突破すれば不正ログインに成功です。
WordPressセキュリティ対策の観点からみても、標準のXMLサイトマップ機能は無効化しておいた方が良いと思います。
ちなみに、投稿者アーカイブにアクセスできないように無効化する処理を実装しても、標準のXMLサイトマップ機能では投稿者アーカイブのURLも含まれた情報が出力されてしまいます。