WordPressのRSSエラー(XMLパースエラー)の対処法
2010年08月24日(火) 22時00分31秒
WordPress 3.0.1特有のエラーでもないとは思いますが、本サイトのフィード表示でパースエラーが発生してしまったので、他で困っている方のためにも対処法を書き残しておきたいと思います。
エラー内容
XMLファイルの先頭に余分な改行、スペースが入ってしまっているため、各種ブラウザにてエラーが発生。
Firefoxでフィードを表示した場合
XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。
URL: http://kngy.net/feed/
行番号: 2, 列番号: 1:
XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。
URL: http://kngy.net/feed/
行番号: 2, 列番号: 1:
Google Chromeでフィードを表示した場合
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.
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.
Internet Explorerでフィードを表示した場合
Internet Explorer ではこのフィードを表示できません
Internet Explorer ではこのフィードを表示できません
このフィードにはコード上のエラーが含まれています。
詳細情報
無効な XML 宣言です。
行: 2 文字: 3
<?xml version="1.0" encoding="UTF-8"?>
対処方法
よく書かれている、functions.phpの編集や、プラグインの無効化では直りませんでしたが、wp-includes内にある2つのファイルへそれぞれ1行ずつ追加することにより、解決しました。
行った対応は、下記となります。
編集ファイル
wp-includes/feed-rss2.php
wp-includes/feed-rss2-comments.php
wp-includes/feed-rss2.php
wp-includes/feed-rss2-comments.php
編集内容
それぞれのファイルの2行目に、「ob_end_clean();」を追加。
<?php
↓
<?php
ob_end_clean();
それぞれのファイルの2行目に、「ob_end_clean();」を追加。
<?php
↓
<?php
ob_end_clean();
その他注意点
少なくともFirefoxとGoogle Chromeでは、変更が反映されていても、キャッシュが原因で、リロードしてもエラー表示のままという現象を確認しております。
変更を行ってもだめだったと他の方法を探す前に、ブラウザの設定でキャッシュをクリアし、今一度確認を行うことをおすすめします。
僕の場合、ブラウザの再起動を行っても、キャッシュによって反映が確認できませんでした。
1、2時間試行錯誤してしまいましたが、終わってみると、なんだかあっけなく感じますね。

