¿Cómo obtener la última fecha de actualización de una publicación de un feed WP RSS?

4

Tengo una herramienta de terceros que extrae el contenido del feed de nuestro sitio de WordPress, a través de nuestro feed RSS: enlace

El feed me proporciona todo lo que necesito, excepto la última fecha actualizada de la publicación del blog; Incluye la fecha publicada, sin embargo, esta es simplemente la fecha en que se publicó el blog por primera vez; Las ediciones / cambios realizados en el blog después de la publicación no afectan esta fecha.

Ahora lo que es interesante es que la versión ATOM de la fuente ( enlace ) incluye tanto la fecha publicada como la fecha actualizada, por ejemplo:

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

Lo que es genial, excepto que a la fuente ATOM le falta contenido crítico (en particular, le falta una serie de elementos "medios:", como medios: miniatura, etc.)

Después de todo esto, mi pregunta: ¿hay alguna forma de que el campo actualizado que se incluye en la entrada de la fuente ATOM aparezca en la fuente RSS principal? (tal vez a través de alguna opción de configuración?)

    
pregunta RMD 14.06.2016 - 22:34

1 respuesta

5

Atom vs RSS2

Veamos los archivos wp-includes/feed-atom.php y wp-includes/feed-rss2.php .

El elemento updated de la entrada del feed Atom es:

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

El elemento pubDate del elemento de feed RSS2 es:

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

El elemento lastBuildDate del canal RSS2 es:

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

Namespace

La fuente RSS2 ya contiene el espacio de nombres Atom :

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

así que creo que podemos usar el elemento <atom:updated> para nuestro elemento personalizado updated . Es posible que desee verlo más a fondo, si cumple con el estándar o si hay otros espacios de nombres posibles adecuados para esto.

Para el último caso, podemos usar la acción rss2_ns para agregar el espacio de nombres relevante.

Inyectar un elemento personalizado

Podemos usar la acción rss2_item para inyectar elementos de elementos personalizados, como:

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

} );

Espero que puedas ajustarlo a tus necesidades.

    
respondido por el birgire 15.06.2016 - 08:23

Lea otras preguntas en las etiquetas