WordPressのRSSフィードでエラーが出たので原因や解決方法を調べました

1082770_60147230

WordPressのRSSフィードでエラーが出てしまったので、解決メモです。

RSSフィードのエラー内容

エラーはこんな内容でした。

wordpress-rss-error01

「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フィードバリデータをご紹介。

RSSフィードを吐き出しているURLを入力して「Check」ボタンをクリックするとバリデーションされます。(RSSフィードのURLはWordPressの場合、何も弄ってない初期状態であれば「http://ドメイン名/feed」となります。) wordpress-rss-error03

RSSフィードにエラーが出ていたら、ちゃんと黄色でハイライトされます。整形もされていて見やすいです。

wordpress-rss-error04'

さて、見やすくなった所でようやくデバッグのスタートラインに立てました。

僕の場合のエラー原因

僕の場合、バリデートした結果

  • XML parsing error: <unknown>:498:24: not well-formed (invalid token)
  • content:encoded should not contain relative URL references

という2つのエラーが出ました。

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フィードそのものに手を加えたりするプラグインもあります。ので、まずはプラグインを疑うことが近道かもしれません。

プラグインに原因があるかどうかを調べる手順は

  1. デフォルトテーマを適用する。
  2. 直らなければ、プラグインを全て無効化。
  3. 全て無効化して解決した場合、プラグインを1つずつ有効化して突き止める。

です。3つ目の部分で解決しない場合はプラグインではなく他に原因があります。

この手順はこちらのWordPressフォーラムを参考にしています。また、このフォーラムにはRSSキャッシュを無効にするソースコードも書かれているので参考にしましょう。

テーマファイルのソースに空白行が入っている

テーマファイル(やコアファイル)に空白行が入っていると、RSSフィードのXMLソースコードにも空白行が入ってエラーになります。phpタグの外側に空白行が入っているミスがよくある例のようです。

WordPressのコアファイルの問題

「マジかよ」と言いたくなる話ですが、WordPressのコアファイルwp-includes/feed-rss2.phpwp-includes/feed-rss2-comments.phpの2つを修正するとエラーが直る場合があるようです。

コアファイルを弄ると直る場合があるとか、コアい(怖い)話ですね。寒くなりました。

最終更新日:2014年9月28日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/wordpress-rss-error/trackback/