さて、今回はプラグイン『Wordpress seo by Yoast』でサイトマップのエラーが発生したので、その原因と解決法を記事にしたいと思います。
WordPress seo by Yoast でSitemap エラー
『Wordpress seo by Yoast』のXMLサイトマップを参照しようとしたところ、下記のようなエラーが発生し、XMLサイトを参照することができませんでした。
This page contains the following errors:
error on line 6 at colum 10:XML declaration allowed only at the start of the document
Below is rendering of the page up the first error.
公式のFAQを参照してみる
seo by Yoastの公式FAQページには、下記のようにサイトマップエラーの対処がかかれています。
First of all, let us be clear that this is usually not due to our plugin,
but due to poorly coded themes and/or other plugins.
『まず初めに、これはseo by Yoastのプラグインの問題ではありません。』
『原因は、他のコード、またはプラグインに存在します。』
と書かれています。
つまり、『Wordpress seo by Yoast』のプラグインをダウングレードしても、問題は解決しないということです。
それを踏まえた上で、以下の手順を実行してくだいさい。
① パーマリンクの切り替え
WordPressメニュー『設定』 > 『パーマリンク設定』から、現在と異なるパーマリンクを複数かい切り替え、元のパーマリンクに戻してから『保存』します。
これで効果があるのか疑問ですが、これでエラーが消えたという例もあるようです。
② サイトマップから除外する項目を確認する
WordPressのメニュー『SEO』 > 『XMLサイトマップ』から、『除外する投稿』『タクソノミー』でサイトマップから除外するものを設定します。
とくに、『Google Web マスターツール』の『クロール』でエラーの警告が出ているリンクを設定してください。
何も警告表示がない場合は、この設定は必要ありません。
③ htaccessにRewriteルールを記述する
# Yoast SEO - XML Sitemap Rewrite Fix RewriteEngine On RewriteBase / RewriteRule ^sitemap_index.xml$ /index.php?sitemap=1 [L] RewriteRule ^locations.kml$ /index.php?sitemap=wpseo_local_kml [L] RewriteRule ^geo_sitemap.xml$ /index.php?sitemap=geo [L] RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 [L] RewriteRule ^([a-z]+)?-?sitemap.xsl$ /index.php?xsl=$1 [L] # END Yoast SEO - XML Sitemap Rewrite Fix
WordPressメニュー『SEO』 > 『ツール』 > 『ファイルエディタ』から、『htaccess』を編集します。
上記のRewriteルールをそのままコピーし、様子をみてください。
④ function.phpを見直す
特に子テーマを使用している場合に注意が必要です。
『function.php』で不要な『改行』や『空白』が存在している場合、『XMLサイトマップ』でエラーが生じるようです。
一度『function.php』を見直し、上記の点を見直してみましょう。
➄ テーマを変えて様子を見る
デフォルトのテーマに変更するか、別のテーマに切り替えてみましょう。
もし、テーマを切り替えることで、XML サイトマップのエラーが解消されるようであれば、テーマファイルの『function.php』に何かしらの原因があるのかもしれません。
⑥ WordPressを最新にする
① ~ ➄までの手順を行ってもXMLサイトマップエラーが解消されない場合、WordPress自体を最新版に更新してみましょう。
もし、これでXMLサイトマップエラーが解消されない場合、もはやどうしようもありません。
XMLサイトマップを自動生成する他のプラグインを探したほうが良いでしょう。
あとがき
今回の原因は『function.php』で不要な『改行コード』や『空白』があったために、XMLサイトマップエラーが起きていました。
function.phpとXMLサイトマップとの関係性がよくわからないのですが、何かしらの繋がりがあるのは確かなようです。
WordPressでXMLサイトマップを自動生成するプラグインは他に『Google XML Sitemaps』などがありますが、そちらのプラグインでエラーが出ている場合は、ダウングレードすることにより、症状が改善される場合があります。
『WordPress seo by Yoast』の場合は、①~⑥を実施してみてください。