目次
はじめに
WordPressでは標準でRSSフィードが提供されています。
例えばこのサイトであれば「https://2017.l2tp.org/feed」が標準で提供されています。
実際にはいくつかのフィードの種類が提供されています。
その一覧は下記のとおりです。
- rss2
- rss
- atom
- rdf
- コメント rss2
- コメント atom
RSSで提供されるXMLには、投稿日時を表す pubDate という要素があります。
この pubDate が9時間ズレた値で表記されていました。
実際にはGMT(世界標準時)で記載されているのでズレてないのですが、RSSリーダーでGMTに対応していない可能性がある、ということで9時間ズラした値を出力するようにしてみました。
現在の動作確認
$ curl -s https://2017.l2tp.org/feed | grep pubDate
<pubDate>Thu, 24 Aug 2017 07:54:19 +0000</pubDate>
<pubDate>Thu, 24 Aug 2017 01:28:03 +0000</pubDate>
+0000となっているのでGMTで動作していますね。
変更点
RSSの出力も他の固定ページなどと同じく、テンプレートファイルを参照して出力されます。
ただしそのテンプレートファイルはテーマディレクトリには無く、WordPressのコアファイル(wp-includes)に入っています。
このファイルをテーマディレクトリにコピーします。
cp public/wp-includes/feed-rss2.php themes/l2tp
で、functions.phpでそのファイルを呼び出すように変更します。
/**
* Use our own customized RSS feed.
*/
remove_all_actions( 'do_feed_rss2' );
add_action( 'do_feed_rss2', function() {
get_template_part( 'feed', 'rss2' );
}, 10, 1 );
コピーしてきた feed-rss2.php のpubDate周りを変更します。
... 省略
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0900', get_post_time('Y-m-d H:i:s', false), false); ?></pubDate>
... 省略
変更点は2つです。
mysql2date()
の +0000 を日本標準時となる +0900 に変更get_post_time()
の第二引数、GMTにするかどうかをfalse
に変更
確認
ちゃんと動いているか確認しておきます。
$ curl -s https://2017.l2tp.org/feed | grep pubDate
<pubDate>Thu, 24 Aug 2017 16:54:19 +0900</pubDate>
ちゃんと動いたようでした。
感想
最近の流れとしては基本的にGMT(+0000)として動作させることが多いと感じています。
実際に幾つかの代表的なRSSフィードのあるサイトを廻ってみましたが、ほとんどは+0000でした。
(が、これは殆どのブログでWordPressを使っているからかもしれないです)
RSSフィードの実装系もそのうちGMTにちゃんと対応してくれると思いますので、その際には+0000にしたいと思います。