WordPressのRSSフィードでエラーが出てしまったので、解決メモです。
目次
RSSフィードのエラー内容
エラーはこんな内容でした。
「This page contains the following errors:
error on line 484 at column 25: Input is not proper UTF-8, indicate encoding ! Bytes: 0x08 0xE7 0xB5 0xB1
Below is a rendering of the page up to the first error.」
Google翻訳で訳してみました(ちょっとだけ私の補完あり)。
このページには、次のエラーが含まれています:
484行目の25列(文字)のエラー:入力が適切でないUTF-8エンコーディングを示している!
下の最初のエラーにページアップのレンダリングはある
484行目の25文字目から始まる文字が、UTF-8で不適切な文字指定?をしているようです。
「なんだ簡単じゃん!484行目の25文字以降を直せば良いんでしょ?(笑)」と早速修正作業に入りたいのですが、如何せんソースコードが改行されていない。1行に集約されちゃってます。
484行目ってどこですか?
見辛いのでRSSフィードのバリデータを使う
RSSフィードにもバリデータがあることを知りました。
幾つかサイトはありますが、W3CのRSSフィードバリデータをご紹介。
W3C Feed Validation Service, for Atom and RSS
This is the W3C Feed Validation Service, a free service that checks the syntax of Atom or RSS feeds.
RSSフィードを吐き出しているURLを入力して「Check」ボタンをクリックするとバリデーションされます。(RSSフィードのURLはWordPressの場合、何も弄ってない初期状態であれば「http://ドメイン名/feed」となります。)
RSSフィードにエラーが出ていたら、ちゃんと黄色でハイライトされます。整形もされていて見やすいです。
さて、見やすくなった所でようやくデバッグのスタートラインに立てました。
私の場合のエラー原因
私の場合バリデートした結果、以下2つのエラーが出ました。
- XML parsing error: <unknown>:498:24: not well-formed (invalid token)
- content:encoded should not contain relative URL references
XML parsing error
このエラーはXMLの構文解析エラーです。私の場合は498行目の24文字目以降(498:24)に問題の文があるようなのですが。
その問題の文は以下です。(この記事の冒頭です)
統合開発環境のEclipseをインストールしようとしたら「”Eclipse”は、開発元が未確認のため開けません。」と出て起動出来ませんでした。
…どこが間違っているのかさっぱりわかりません。記号のダブルクォーテーション(”)やカギ括弧(「」)を外してみたりしてもエラーが消えません。この文章を消したらエラーは解決されます。
文章を変えたりしても解決されなかったのですが、最終的に同じ文章で問題なくエラーが解消されました。RSSフィードのキャッシュも無効化していましたし不思議です。(文章を変えた時にバリデートしてみると、エラーに表示される文字も変わっていたのでキャッシュは効いていないはず…)
というわけで、もし記事の本文が原因の場合は、指摘された箇所の文を消したり書き換えたり、戻したりしてると直るかもしれません。(正確な解決方法を提示出来なくて何か申し訳ないです)
content:encoded should…
このエラーはどちらかというと警告です。私の場合はAmazonの商品を表示するプラグイン「AmazonJS」が原因でした。
実はエラーの意味が良くわからないのですが、翻訳から察してみた感じエンコードされたURLが問題のようです。AmazonJSプラグインがAmazon商品へのリンクURLをエンコードしているのでしょうか。
RSSフィードの生成には問題がないので放置決定です。(面倒くさいとは口が裂けても言えない)
その他のエラーの原因・解決
RSSフィードのエラーには他にも原因が沢山あります。コレに連れて解決策の記事も沢山。よくあるエラーの原因とその対策記事をまとめておきます。
プラグインが原因
例えば今回のように(警告でしたが)「AmazonJS」が原因だったり、こちらの記事では「Ktai Style」が原因だと書いてあったり。
RSSフィードが知らない間にエラーを吐き出していた | Country Netlife plus
最近ふと当ブログのフィードはどうなってるかとチェックしてみたら、何やらエラーを吐き出していたのでちょっとびっくりしました。Firefoxでは問題...
記事本文に手を加えたり、RSSフィードそのものに手を加えたりするプラグインもあります。ので、まずはプラグインを疑うことが近道かもしれません。
プラグインに原因があるかどうかを調べる手順は
- デフォルトテーマを適用する。
- 直らなければ、プラグインを全て無効化。
- 全て無効化して解決した場合、プラグインを1つずつ有効化して突き止める。
です。3つ目の部分で解決しない場合はプラグインではなく他に原因があります。
この手順はこちらのWordPressフォーラムを参考にしています。また、このフォーラムにはRSSキャッシュを無効にするソースコードも書かれているので参考にしましょう。
テーマファイルのソースに空白行が入っている
テーマファイル(やコアファイル)に空白行が入っていると、RSSフィードのXMLソースコードにも空白行が入ってエラーになります。phpタグの外側に空白行が入っているミスがよくある例のようです。
Wordpressフィードエラー、テーマとXMLの一行目の空白改行 | BLOG – 名古屋のソーシャルメディアPR、WEB制作会社アイデアクラウドのブログ
最近気がついたのですが、ideacloudブログのfeedが まったく出力されていませんでした。 色々と原因を考えて調べまわって、ソースの一行目に空白の...
WordPressのコアファイルの問題
「マジかよ」と言いたくなる話ですが、WordPressのコアファイルwp-includes/feed-rss2.phpとwp-includes/feed-rss2-comments.phpの2つを修正するとエラーが直る場合があるようです。
WordPressのRSSエラー(XMLパースエラー)の対処法 – kngy.net
WordPressのフィード表示にて、「XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。」や「Internet Explorer ではこのフィー...