如何从WP RSS提要中获取帖子的最后更新日期?

时间:2016-06-14 作者:RMD

我有一个第三方工具,可以通过RSS提要从我们的WordPress站点提取提要内容:http://ontariotravelblog.com/feed

feed提供了我所需要的一切,除了博客文章的最后更新日期;它确实包括发布日期,但这只是博客首次发布的日期;发布后对博客所做的编辑/更改不影响此日期。

有趣的是,这个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提要缺少一些关键内容(特别是缺少一些“媒体:”元素,如媒体:缩略图等)之外

所以在这一切之后,我的问题是:有没有办法updated 要显示在主RSS提要上的ATOM提要条目中包含的字段?(可能通过一些配置选项?)

1 个回复
最合适的回答,由SO网友:birgire 整理而成

Atom vs RSS2

让我们看看wp-includes/feed-atom.phpwp-includes/feed-rss2.php 文件。

这个updated Atom提要条目的元素是:

<updated><?php 
    echo mysql2date(
        \'Y-m-d\\TH:i:s\\Z\', 
        get_lastpostmodified(\'GMT\'), 
        false 
    ); 
?></updated>
ThepubDate RSS2提要项的元素为:

<pubDate><?php 
    echo mysql2date(
        \'D, d M Y H:i:s +0000\', 
        get_post_time(\'Y-m-d H:i:s\', true), 
        false
    ); 
?></pubDate>
ThelastBuildDate RSS2信道的元素为:

<lastBuildDate><?php 
    echo mysql2date(
        \'D, d M Y H:i:s +0000\', 
        get_lastpostmodified(\'GMT\'), 
        false
    ); 
?></lastBuildDate>

Namespace

RSS2提要已经包含Atom命名空间:

xmlns:atom="http://www.w3.org/2005/Atom"
所以我想我们可以使用<atom:updated> 自定义元素已更新。您可能想进一步检查它,如果它符合标准,或者是否有其他可能的名称空间适用于此。

对于后一种情况,我们可以使用rss2_ns 添加相关命名空间的操作。

Inject a custom element

我们可以使用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 )
    );

} );
希望你能根据自己的需要进行调整。