rss feed error の 対処例 @WordPress

WordPressのフィードが、正常に出力できなくなるトラブルは、比較的多く発生する問題ですが、多くは、カスタマイズによる空白文字列の追加などによって、フィードがエラーになる事例です。フィードがエラーというのは、フィードを表示した時にエラーメッセージが表示されている場合の事をここでは そのように表現しています。

フィードエラーサンプル

This page contains the following errors:

error on line 3 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.

parsererror要素は、div要素に書き換えています。

上のエラーは、functions.php のphpコード区間外に余分な改行を入力することで、再現できます。

一度、このようなフィードを表示すると、WordPressにフィードがキャッシュされて、改行を元に戻しても、現象が継続する事があるため、対策が、迷路に入るケースが多いと思われます。

Feedがエラーで表示できない場合

デフォルトのフィードリンクのチェック

フィードのURLは、パーマリンク設定により異なります。デフォルトフィードのURLを確認しておくといいです。

functions.php に

トップページを閲覧して、

  • リンクをコピーしたら、コードを削除

デフォルトフィードにアクセス。

エラーを確認

冒頭のエラーは、functions.phpにphp区間外の改行を追加して、人為的に発生させたものですが、改行を取り去っても、フィードは、WordPressにキャッシュされているので、ブラウザのキャッシュを削除しただけでは解消しません。

なので、WordPressのキャッシュを停止するコードを作ります。

フィードキャッシュの停止

( デバッグの時だけ、使ってください )

カスタマイズでの、テストコードなどが、フィードにキャッシュされる事があります。
(functions.phpに実験的に出力したコード、php区間外の空白や改行、bom など、)

ブラウザキャッシュの削除

一度みたら、ブラウザはキャッシュしていると考えたほうがいい。

File not foundが表示(WordPressのnot foundでないもの )される場合

Step 1

functions.phpに以下を記述て、デフォルトフィードを、確認する。

Step 2

デフォルトフィードにアクセスする。

デフォルトフィードが、初期設定の

のように、feed=rss2でない場合には、.htaccess ファイルをチェックする。

.htaccessが存在しない場合や、.htaccessにmod_rewriteの記述がない場合は、パーマリンクの設定を、デフォルトに戻す。

最初から、デフォルトフィードのチェックを繰り返す。

.htaccessが存在しない場合や、記述がある場合は、phpinfo() を使って、mod_rewriteが使えるようになっているかどうかを、チェックする。**チェック方法
ファイル名 phpinfo.php
作成したファイルに、以下のように記述してワードプレスをインストールしたディレクトリにアップロードしてください。

ブルーのテーブルが表示されれば、成功です。
Loaded Modules という項目に、mod_rewrite の記載があればOKです

( 確認できたら、必ずファイルは削除してください )

記載がない場合は、パーマリンクは、デフォルトに戻す。
パーマリンクの設定は、利用できません。

http://ja.forums.wordpress.org/topic/12312?replies=9(参考 say @popup )

Aside

パーマリンクの設定を、日付と投稿名などとしている場合

フィードが見つからないと、
http://www.example.com/wp/arienai/feed/

にアクセスすると、フィードが見つからないよ、というフィードが出力されます。※1(ver3.4.2)

もう一方で、パーマリンクがデフォルトの場合
http://example.com/wp/arienai/?feed=rss2
とした場合には、デフォルトのフィードが出力されるという事もあります。(ver3.4.2)

実際問題として、パーマリンクの設定と、フィードの出力は、微妙な挙動を示す事はありそうです。

何らかの問題で、apache404や、通常のwordpressの404を表示が行われると、
フィードリーダーや、fetch用のスクリプトが、文字列を受け取るので、エラーになる事が考えられます。

そのような場合は、カスタムエラーページを、xmlで作っておいてfeedのエラーに対応するという事も必要かもしれません。

※1ファイルが見つからない場合の xml

結局のところ、xml形式のファイルアクセスは、多分、xmlでエラーを返したほうがよいのだろうと思う。
ワードプレスの場合は、フィードの種類も多く、複雑になりそうなので、HTTP404をxmlで返してやる事なら簡単なので、rssで、カスタムエラーページを書いてみました。

サンプル

.htaccessなどで

などとして、カスタムエラーページを、xmlとして、スタイルを付けておけば、人間もプログラムも読めるので、フィードリーダーなどが、過去に存在していたが、現在存在しなくなったフィードでも、エラーではなく、存在しないというフィードを取得できるようになるかもしれません

フィードリーダーの挙動は、追っかけていませんので、あしからず

おまけで追記


コメントは受け付けていません