it-swarm.com.de

So erhalten Sie das Datum der letzten Aktualisierung eines Beitrags von a WP RSS-Feed?

Ich habe ein Drittanbieter-Tool, das Feed-Inhalte von unserer WordPress-Website über unseren RSS-Feed extrahiert: http://ontariotravelblog.com/feed

Der Feed bietet mir alles, was ich brauche, mit Ausnahme des Datums, an dem der Blog-Beitrag zuletzt aktualisiert wurde. Es enthält zwar das Veröffentlichungsdatum, dies ist jedoch lediglich das Datum, an dem das Blog zum ersten Mal veröffentlicht wurde. Änderungen, die nach der Veröffentlichung am Blog vorgenommen wurden, haben keinen Einfluss auf dieses Datum.

Interessant ist nun, dass die ATOM-Version des Feeds ( http://ontariotravelblog.com/feed/atom ) sowohl das Veröffentlichungsdatum als auch das Aktualisierungsdatum enthält, zum Beispiel:

 <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>

Das ist großartig, außer dass dem ATOM-Feed einige wichtige Inhalte fehlen (insbesondere fehlen eine Reihe von "media:" - Elementen, wie z. B. media: thumbnail usw.).

Nach alledem meine Frage: Gibt es eine Möglichkeit, das updated -Feld, das im ATOM-Feed-Eintrag enthalten ist, im RSS-Haupt-Feed anzuzeigen? (vielleicht über eine Konfigurationsoption?)

3
RMD

Atom vs RSS2

Schauen wir uns die Dateien wp-includes/feed-atom.php und wp-includes/feed-rss2.php an.

Das Element updated des Atom-Feed-Eintrags lautet:

<updated><?php 
    echo mysql2date(
        'Y-m-d\TH:i:s\Z', 
        get_lastpostmodified('GMT'), 
        false 
    ); 
?></updated>

Das pubDate -Element des RSS2-Feed-Elements lautet:

<pubDate><?php 
    echo mysql2date(
        'D, d M Y H:i:s +0000', 
        get_post_time('Y-m-d H:i:s', true), 
        false
    ); 
?></pubDate>

Das Element lastBuildDate des RSS2-Kanals ist:

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

Namespace

Der RSS2-Feed enthält bereits den Namespace Atom :

xmlns:atom="http://www.w3.org/2005/Atom"

ich denke, wir können das <atom:updated> -Element für unser benutzerdefiniertes updated -Element verwenden. Vielleicht möchten Sie es weiter überprüfen, ob dies den Standard erfüllt oder ob es andere mögliche Namespaces gibt, die dafür geeignet sind.

Im letzteren Fall können wir die Aktion rss2_ns verwenden, um den relevanten Namespace hinzuzufügen.

Injizieren Sie ein benutzerdefiniertes Element

Wir können die Aktion rss2_item verwenden, um benutzerdefinierte Elementelemente einzufügen, wie zum Beispiel:

add_action( 'rss2_item', function()
{   
    printf( 
        '<atom:updated>%s</atom:updated>',
         get_post_modified_time( 'D, d M Y H:i:s +0000', true )
    );

} );

Hoffentlich können Sie es an Ihre Bedürfnisse anpassen.

5
birgire