WordPressのFeedを表示すると「実体の初めに XML またはテキスト宣言がありません。」というエラー

WordPressでは標準でRSSフィードが備わっています。
URLは?feed=rss2だったり/feed/だったりパーマリンク設定によりさまざまです。

さあ表示してみようと思ったら、XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。 というエラーが出てしまいました。

検索すると、どうやら該当のファイルの末尾に、下記のように無駄な空白行が発生していることが原因のようです。

<?php 
//コード
?>
//閉じタグの後に空白行が↓




疑われるファイルはこちら。

  • /index.php
  • /wp-blog-header.php
  • /wp-config.php
  • /wp-includes/feed-rss2.php
  • /wp-includes/feed-rss2-comments.php
  • /wp-content/themes/利用中のテーマ/functions.php

ですが、すべて消してもまだエラーが解消されませんでした。
そこで一旦プラグインを全部無効化して確認したところRSSが表示されます。
ということはプラグインが原因です。

ひとつひとつ有効化しては確認していったところ犯人はBuddyPressでした。

BuddyPressを利用している場合、空白行が入っているかもしれない疑わしいファイルは上記リストに加えてもう一つあり、まさにそれが今回の原因でした。
そのファイルはbp-custom.phpです。

ということでBuddyPressを利用していてRSSでエラーが出る場合は

  • /wp-content/plugins/bp-custom.php

も追加でご確認ください。