私は私たちのRSSフィードを介して、私たちのWordPressサイトからフィードコンテンツを抽出するサードパーティ製のツールを持っています: http://ontariotravelblog.com/feed
フィードは、ブログ投稿の最終更新日を除いて、必要なものすべてを提供してくれます。公開日は含まれますが、これは単にブログが最初に公開された日です。公開後にブログに加えられた編集/変更は、この日付には影響しません。
今興味深いのは、ATOM版のフィード( http://ontariotravelblog.com/feed/atom )には公開日と更新日の両方が含まれていることです。例えば:
<entry>
...
<title type="html">
<![CDATA[8 Songs for Your Ontario Summer Road Trip Playlist]]>
</title>
<id>http://ontariotravelblog.com/?p=5621</id>
<updated>2016-06-09T16:40:46Z</updated>
<published>2016-05-10T16:25:35Z</published>
...
</entry>
ATOMフィードに重要なコンテンツがいくつか欠けている(特に、media:thumbnailなどの "media:"要素がいくつか欠けている)ことを除けば、これは素晴らしいことです。
それで、結局のところ、私の質問は、メインのRSSフィードに表示されるATOMフィードエントリに含まれる updated フィールドを取得する方法はありますか? (おそらくいくつかの設定オプションを介して?)
wp-includes/feed-atom.php
とwp-includes/feed-rss2.php
ファイルを見てみましょう。
Atomフィード項目のupdated
要素は、次のとおりです。
<updated><?php
echo mysql2date(
'Y-m-d\TH:i:s\Z',
get_lastpostmodified('GMT'),
false
);
?></updated>
RSS2フィード項目のpubDate
要素は以下のとおりです。
<pubDate><?php
echo mysql2date(
'D, d M Y H:i:s +0000',
get_post_time('Y-m-d H:i:s', true),
false
);
?></pubDate>
RSS2チャンネルのlastBuildDate
要素は以下のとおりです。
<lastBuildDate><?php
echo mysql2date(
'D, d M Y H:i:s +0000',
get_lastpostmodified('GMT'),
false
);
?></lastBuildDate>
RSS2フィードには既に Atom 名前空間が含まれています。
xmlns:atom="http://www.w3.org/2005/Atom"
そのため、私たちはカスタムの updated 要素に<atom:updated>
要素を使用できると思います。それが標準を満たしている場合、またはこれに適した他の名前空間がある場合は、さらにチェックアウトすることをお勧めします。
後者の場合はrss2_ns
アクションを使って関連する名前空間を追加することができます。
rss2_item
アクションを使用して、次のようにカスタムアイテム要素を挿入できます。
add_action( 'rss2_item', function()
{
printf(
'<atom:updated>%s</atom:updated>',
get_post_modified_time( 'D, d M Y H:i:s +0000', true )
);
} );
うまくいけば、あなたはあなたのニーズに合わせてそれを調整することができます。