J'ai un outil tiers qui extrait le contenu des flux de notre site WordPress, via notre flux RSS: http://ontariotravelblog.com/feed
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 ( http://ontariotravelblog.com/feed/atom ) 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 (notamment un certain nombre d'éléments "media:", tels que media: vignette, etc.).
Après tout cela, ma question est la suivante: existe-t-il un moyen de faire en sorte que le champ updated , inclus dans l’entrée du flux ATOM, apparaisse sur le flux RSS principal? (peut-être via une option de configuration?)
Regardons les fichiers wp-includes/feed-atom.php
et wp-includes/feed-rss2.php
.
L'élément updated
de l'entrée de fil 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 fil 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>
Le flux RSS2 contient déjà le Atom namespace:
xmlns:atom="http://www.w3.org/2005/Atom"
je pense donc que nous pouvons utiliser l'élément <atom:updated>
pour notre élément updated element personnalisé. 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é.
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.