WordPressのRSSやAtomフィードの改行とか画像とかの反映について

以下、WordPressのfeedに関しての内容です。他のBlogとかはよく分からないので触れていません。 RSSリーダーはGoogle Reader のみで試しています。RSSリーダーによって表示は若干異なったりするらしいです。 あと、WordPress側の設定で、管理画面のオプション→表示設定→「RSS/ATOMフィード」→「各投稿の表示」が「全文を表示する」になっていることを前提。概要だけ出力してる場合は除く。

Google Reader で改行が反映されないfeedのサイトがある

Google Reader で改行が反映されないfeedのサイトがあります。

うちのサイト(WP2.7)の場合で検証したところ、feedの種類によって何がどう違うのかはさっぱりしらないけど、RSS 0.92 のfeedでのみ改行が反映されない。他(rdf,rss2.0,atom)などについては改行されている。(あと、画像も表示されない)

feed_0905_1
RSS 0.92
feed_0905_2
RSS 2.0 (他のfeedでも同じ感じ)

例えば、RSSを購読する手段として、Firefoxだったらロケーションバーの右側にFeedのアイコンがあってそこをクリックして、自分が使ってるRSSリーダーに登録して、とかって手順だと思います。

feed_0905_3
ロケーションバー

ここで、ブラウザが取得しているFeedのURLは、WordPressが出力しているFeedのURLとは異なります。(WPが出力したのを自動的にブラウザが認識してくれるとかではない) ブラウザに認識してもらうためには、ソースのheadタグにFeedのURLはこれですっていう記述を書かないといけない。

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="RSS 2.0のURL" />

のような感じで。これを複数、たとえばRSS2.0とAtomを書いたら、RSS2.0を購読するか、Atomを購読するかという選択肢が現れる。

すると、Google Reader で改行が反映されないサイトも、headに記述されているfeedのURLがRSS 0.92 であっただけで、自分でRSS 2.0 ないしAtomのURLを叩いてやれば、しっかりと改行が反映された状態で見れるような気がして、いくつかのサイトで試して見た。だけど反映されない場合もあった。というか大抵のサイトはRSS2.0かAtomで配信している。

ちなみにWPでは複数の種類のFeedを吐き出していて、bloginfoというテンプレートタグを使って簡単に確認することができます。(Feed自体は何もしなくても勝手に出力されている。)テンプレートタグ/bloginfo – WordPress Codex 日本語版によると、RDF/RSS 1.0 形式(/feed/rdf)RSS 0.92 形式(/feed/rss)RSS 2.0 形式(/feed/)Atom形式(/feed/atom)がある。

Feedにどんな種類があるかというと、次のようなサイトが参考になる。
HepCat Dev and Test: Feedフォーマットの歴史、バージョン、起源とか

ここまでのまとめ

一旦、ここまでの内容をまとめてみます。

  1. Google Reader で改行が反映されないfeedのサイトがある。
  2. うちのサイトではRSS 0.92のみ反映されない。
  3. 別のWPで作られたサイトでは、RSS 2.0やAtomでも反映されないサイトがある。

2つ目に関連してると考えられるものについて、WordPress フォーラム ≫ RSSに投稿画像を含ませ、改行など有りで配信する方法を見る。解答されてる方の、RSS 1.0 系統と RSS 2.0 系統というのが何の事を言ってるのかちょっとひっかかりますが、RSS 2.0 ないし ATOM フィードを使うようにすると改行や画像は反映されるよという内容。RSS 1.0 系統をRSS 0.92 のことだと考えるとうちのサイトの状況と合う。

3つ目について、若干古い情報かもしれないけど、[WP] RSS Feedを全文配信にするカスタマイズ WP 2.2対応版 – Odysseygate.com によると、WPのコアファイル「feed-rss2.php」内の

<content :encoded>< ![CDATA[<?php the_content() ?>]]></content>
<content :encoded>< ![CDATA[<?php the_content('', 0, '', 0, 3) ?>]]></content>
にすると改行が反映されるらしい。

ちなみに、自分のサイトのものを見てみたけど、デフォルトの記述のままでした。しかし、Google Reader で見る限りはちゃんと改行されている。だから、別にわざわざWPのコアファイルを修正しなくてもデフォルトで改行なんかは反映されるはずだと思うのだけど、上記のような変更をしないとちゃんと反映されないサイトがあるのも事実らしい。

the_content ってそもそもどんなテンプレートタグなのか

ここで、 the_content ってそもそもどんなテンプレートタグなのってことで調べる。

書式: < ?php the_content_rss('more_link_text', strip_teaser, 'more_file', cut, encode_html); ?>

気になったのが最後の encode_html という引数なのだけど、Codexによると

encode_html (0/1/2)- フィルタするHTMLタグを指定。
0(デフォルト。リンクは「URL脚注」として番号を振って出力)
1(PHPのhtmlspecialchars()関数を使ってフィルタ。「cut」の値を0に設定するので、同時に指定しないこと)
2(HTMLタグを取り除き、必要ならば記号などを文字実態参照に変換する。「cut」を指定した場合は、これがデフォルトとなる

とのこと。3なんて書いてないんだけど…。ちなみに、strip_teaser と cut のデフォルトは0らしいのでわざわざ書く必要もないと思う。

考えられるのは、1.新たに3というパラメータが追加された、2.今でも3というパラメーターは存在しない、の二つかなぁ。あるいは昔は3もあったとか。

どれなのかはわからないけど、2であるとする(無理やり!)。パラメーターに定義されていない数字を入れた時にどんな挙動をするのかはわからないけど、予想としてはデフォルトの動作をするんじゃないかと。すると、さっきのコアファイルの変更は何か変更しているようで実際にはなにも変更していないのと同じことになりそうなもんなんですがどうなんでしょうか。

最終的なまとめ

まとめると、WordPressが吐き出すfeed(全文出力)で、RSS 2.0 やAtom のfeedならば改行や画像が反映されるはずだけど、反映されない場合がなぜかある。そのような場合、コアファイルを修正すると、その原理は不明だが反映されるようになるらしい、ということになりました。なんとも煮え切らない結果で残念。

Similar Posts:

この記事へのコメント

現在、この記事へのコメントはありません。

コメントをどうぞ

この記事へのトラックバックとピンバック

  1. […] WordPressのRSSやAtomフィードの改行とか画像とかの反映について | ROKU STUDIO […]

TrackBack URL