WordPressでサイトマップでエラーが起こる時の対処方法

WordPressのサイトマップエラーが起こったときの適切な対応方法を紹介してます。この手順通りに従えば確実に対処可能です。

WordPressでサイトマップを気分で表示した時に「エラーが表示されていて困る」ということがたまにあります。

エラーコード

This page contains the following errors:error on line 2 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.

KAZU

私も1年に1回くらい遭遇します。くつろいでいたら急に後ろからお化けが出てきた・・・みたいな笑

このエラーは直そうにも sitemap.xmlを直接開かない限り、発見できず、通常の開発作業の中で気づくのが難しいのです。

開発作業中に気付けたら事なきを得ますが、この不具合はそうはいかず、遭遇するとため息をついてしまいます。

ただし、原因はわかり切っていますので、下記手順に従い、修正を試みてください。

WordPressのサイトマップエラーを修正する方法

WordPressのサイトマップエラーが起こったときの適切な対応方法を紹介してます。この手順通りに従えば確実に対処可能です。

Step 1
原因を知る

WordPressのサイトマップエラーが起こる原因は主に以下の3つです。どちらも、日本語環境で利用していることが起因します。

  • ソースファイル内に全角スペースが存在する
  • ソース内のPHP構文の行頭に半角スペースが存在する
  • 先頭または末尾に改行(コード)が存在する

厄介なのは、これらの間違いが通常のページでは影響を及ぼさない点です。ほぼほぼ Sitemap.xml だけで問題を起こします。

Step 2
ファイルを特定する

ほとんどの場合、原因を及ぼしているファイルは1つまたは少数の複数のファイルに限ります。そのため、まずは原因となっているファイルを探すところから始めましょう。

  1. 子テーマを使っている場合は子テーマを無効化 : エラーが解消される場合は次へ
    1. functions.phpからのファイル呼び出しを停止 : require()などで呼び出されているファイルの呼び込みを停止して、読み込みを停止するとエラーが解消されるファイルを特定する。特定できない場合は functions.php が原因の可能性が高いので、仮確定して Step 3 へ
  2. 親テーマをWordPressデフォルトの物に切り替え : エラーが解消される場合は次へ
    1. 親テーマのfunctions.phpからのファイル呼び出しを停止 : require() などで呼び出されているファイルの呼び込みを停止して、読み込みを停止するとエラーが解消されるファイルを特定する。特定できない場合は functions.php が原因の可能性が高いので、仮確定して Step 3 へ
  3. プラグインの有効・無効を繰り返し、同様の作業を行う : ただし、プラグインが原因であることはほとんどない。
Step 3
全角スペースを探す
全角表示の時は□マークが表示される様になる

全角は日本語環境特有なので、ソース上で書いてしまうと不具合を起こすことが多々あります。

全角はソースコード上で探すのが難しく、エディターがモジュールで用意している「全角表示モジュール」を利用するのが手っ取り早いでしょう。

私は Atom エディターを使っており、show-ideographic-space をインストールして、全角を表示させています。

他のエディターの場合も同様の方法でできるはずなので、探してみてください。

Step 4
PHP構文の半角スペースを探す
AtomでPHP構文前の半角スペースには注意

PHP構文が行頭にありその前に半角スペースがあると問題を起こします。

これは非常に見つけづらいので「Step2」でファイルを特定するのが非常に重要です。

Step 5
先頭・末尾の改行コードを確認
文頭に改行はダメ(文末も)

PHPファイルの先頭や末尾に改行コードが存在する場合、 sitemap.xmlの表示に影響を与えることがありますので、確認してください。

KAZU

私が使っている Atom エディターは文末の改行は自動で修復してくれます。

他のエディターも同様かと思います。確認してみてください。

文頭については気をつけるしかないです。