wordpress RSSエラー「XML パースエラー:実体の初めにXMLまたはテキスト宣言が~」の対処法
先日、「XML パースエラー:実体の初めにXMLまたはテキスト宣言がありません。」というエラーが出ていたので、その時の対処法を紹介したいと思います。
目次
概要
wordpressで構築したサイトは「自分のURL/feed/」でブラウザ入力すると、RSSのfeed画面を確認できます。
しかし、構築した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.
ブラウザをFirefoxで見てみると、「XML パースエラー:実体の初めにXMLまたはテキスト宣言がありません。」というエラーが出ています。
wordpressのRSSエラー対処法
結論としては、phpタグ前後の空白が原因であることがほとんどです。phpの宣言で、<?php ?>を使いますが、この開始タグや終了タグの前後に改行や空白があると、エラーを指摘されます。
大体の場合、function.phpなどを編集している時に多いエラーだと思います。自分の場合もfunction.phpの改行によるエラーでしたので、改行を削除したら元に戻りました。
基本的には、wordpressサイトを制作した時にエラーが起きていなければ、その後の修正作業によってエラーが起きている可能性が極めて高いです。バージョン管理などをしておき、どの作業によるエラーなのか、判断するようにしましょう。
他にはプラグインの導入によっても起きたりするらしいので、ソースコードをいじってないのにエラーが起きる時はプラグインをいったん停止してみることも大事です。
RSSエラー修正はfirefoxで確認しよう
空白削除した後、firefoxだとすぐにエラー修正が反映されましたが、Google Chromeでは少し反映までに時間がかかっていました。エラー修正をする際は、firefoxで見ておいたほうが良いかもしれません。
その他の解決法
普段の運営ではいじらないファイルですが、「wp-config.php」、「wp-rss2.php」、「feed-rss2-comments.php」などの空白も原因になることがあるようです。もし編集していたら、確認しておきましょう。
どうしてもfeedが反映されない時は、最終手段として、「ob_end_clean();」によるバッファクリアのコードを下記のファイルに適用すると、うまく動作するようになるみたいです。
wp-includes/feed-rss2.php
wp-includes/feed-rss2-comments.php
▼詳しくはこちらのサイト様へ
http://wadajuku.jp/archives/szk/20130417-2
まとめ
いかがでしたでしょうか。とりあえず「XML パースエラー:実体の初めにXMLまたはテキスト宣言がありません。」というエラーが出たら、php宣言タグの前後の空白を疑ってみると良いかと思います。