WordPressでできたサイトで突然RSSフィードが届かなくなりました。Webサイトに行って、RssフィードのURLを叩いてみると下記のエラー。
XML Parsing Error: XML or text declaration not at start of entity
Location: 対象サイトのURL
Line Number 1, Column 3: <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
--^
2週間くらい前まではRSSフィードが届いていたので、そこまでは正常に動いていました。そしてそのタイミングではサイトの更新は一切行っていません。
結論からいうと、解決したのですが、人によって効果のあった対応方法が違うようです。
ob_end_clean()を入れる
エラーの内容から生成されたXMLファイルの先頭に空白行が入っていることが不具合の原因ということがわかります。
そこで/wp-include/feed-rss2.php の先頭に下記の一文をいれて、空白行を削除します。
[crayon]
[/crayon]
私のケースではこれでエラーが解消されました。
ちなみに私はfeed=rss2を指定しているのでこのファイルを修正しましたが、他の形式を指定している方はfeed-rss.phpやfeed-xxxを修正してください。
ドキュメントルートのファイルを編集する
サイトのドキュメントルート以下にある index.php, wp-blog-header.php, wp-settings.phpを開いて、最後にある空白行を削除する
このケースで解消されている方もいるようです。
参考リンク
https://ja.forums.wordpress.org/topic/4733
functions.phpの空白行を削除する
利用中のtheme以下にあるfunctions.phpや、wp-include以下にあるfunctios.php、pluginディレクトリ以下にあるfunction.phpの最後にある空白行を削除する