Comment obtenir la dernière date de publication d'une publication à partir d'un fil RSS WP?

4

J'ai un outil tiers qui extrait le contenu des flux de notre site WordPress, via notre flux RSS: enlace

Le flux me fournit tout ce dont j'ai besoin, à l'exception de la dernière date de mise à jour de l'article de blog; la date de publication est indiquée, mais il s’agit simplement de la date à laquelle le blog a été publié pour la première fois; les modifications apportées au blog après la publication n’affectent pas cette date.

Ce qui est intéressant, c’est que la version ATOM du flux ( enlace ) inclut à la fois la date de publication et la date de mise à jour, par exemple:

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

Ce qui est excellent, sauf que certains éléments critiques manquent dans le flux ATOM (en particulier, il manque un certain nombre d'éléments "media:", tels que media: miniature, etc.)

Après tout cela, ma question: existe-t-il un moyen de faire en sorte que le champ mis à jour inclus dans l'entrée de flux ATOM apparaisse dans le flux RSS principal? (peut-être via une option de configuration?)

    
posée RMD 14.06.2016 - 22:34

1 réponse

5

Atome vs RSS2

Regardons les fichiers wp-includes/feed-atom.php et wp-includes/feed-rss2.php .

L'élément updated de l'entrée de flux Atom est:

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

L'élément pubDate de l'élément de flux RSS2 est:

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

L'élément lastBuildDate du canal RSS2 est:

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

Espace de noms

Le flux RSS2 contient déjà l'espace de noms Atom :

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

donc je pense que nous pouvons utiliser l'élément <atom:updated> pour notre élément personnalisé mis à jour . Vous voudrez peut-être aller plus loin, si cela répond à la norme ou s'il existe d'autres espaces de noms possibles pour cela.

Dans ce dernier cas, nous pouvons utiliser l'action rss2_ns pour ajouter l'espace de nom approprié.

Injecter un élément personnalisé

Nous pouvons utiliser l'action rss2_item pour injecter des éléments d'élément personnalisés, tels que:

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

} );

J'espère que vous pourrez l'adapter à vos besoins.

    
réponse donnée birgire 15.06.2016 - 08:23

Lire d'autres questions sur les étiquettes