だれかのなにかに役立てるウェブ制作者YoTaの趣味ブログ

wordpress RSSエラー「XML パースエラー:実体の初めにXMLまたはテキスト宣言が~」の対処法

先日、「XML パースエラー:実体の初めにXMLまたはテキスト宣言がありません。」というエラーが出ていたので、その時の対処法を紹介したいと思います。

概要

wordpressで構築したサイトは「自分のURL/feed/」でブラウザ入力すると、RSSのfeed画面を確認できます。

0

しかし、構築したwordpressを編集したりしていると、たまにこんなエラーが出ることがあります。

2

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またはテキスト宣言がありません。」というエラーが出ています。

1

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宣言タグの前後の空白を疑ってみると良いかと思います。

ページ上部に戻る