RSSを微妙に更新

今まで0.92だったんで2.0に。先日単体記事のHTML化に成功したので、RSSで表示されるリンクもHTMLを表示するようにした。

WordPressのRSSには、記事内容をある程度までしかRSSに表示しないように設定されているのだが、その部分のソースを見ると

$excerpt = '';
$blah = explode(' ', $output);
...

というようにexplode関数に半角スペースが渡されているので、記事内容を見て、半角で区切っていって適当なところでぶつ切りにしているのだが、半角スペースなんぞほとんど入らないような日本語メインの記事だとこれは無効になる。そこで、

if( count( $blah ) > 2 ) {
 $output = $blah[0] . '……▽';
}
else {
 $output = $blah[0] . '。';
}

分割した後をこんな感じに修正して、最初の句点まで表示するようにした。句点が1個しかない場合はそのままだ。ちなみに、explodeで分割すると、分割に判断した文字は消えるので補う必要がある。

これでRSSにやたらと長い記事内容が載ることが無くなって安心と思ったら、記事の投稿時間にGMT修正時間が設定されていないことに気付く。RSSを出力する部分のソースを見てみると「'D, d M Y H:i:s +0000'」という、GMT修正時間が直接指定されててズッコケる。オプションでGMT修正時間を設定できるのは一体なんなんだ・・・

というわけで、RSSから記事投稿時間を取得しているmysql2date関数の最後部分に

$gmt = sprintf( "%02d00", get_settings('gmt_offset') );
$j .= ' +' . $gmt;

こげな感じで設定しているGMT修正時間を付け加えるようにした。あとは不必要なデータ、カテゴリとかコメントとかをRSSから削って作業完了。

記事単体に投稿時間が設定されたので、投稿した後で記事を修正した場合に、RSSリーダーに余計なデータを残す必要が無くなったはず。