• タグ別アーカイブ: get_default_feed
  • 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です

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

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

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

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

    おまけで追記