Como obter a última data atualizada de um post de um feed RSS do WP?

4

Eu tenho uma ferramenta de terceiros que extrai o conteúdo de feed do nosso site WordPress, através do nosso feed RSS: enlace

O feed me fornece tudo de que preciso, exceto a última data atualizada da postagem do blog; inclui a data publicada, no entanto, esta é simplesmente a data em que o blog foi publicado pela primeira vez; as edições / alterações feitas no blog após a publicação não afetam essa data.

Agora, o interessante é que a versão ATOM do feed ( enlace ) inclui a data publicada e a data atualizada, por exemplo:

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

O que é ótimo, exceto que o feed ATOM não possui algum conteúdo crítico (em particular, ele está faltando um número de elementos "media:", como media: thumbnail, etc.)

Então, depois de tudo isso, minha pergunta: Existe uma maneira de obter o campo updated que está incluído na entrada do feed ATOM para aparecer no feed RSS principal? (talvez através de alguma opção de configuração?)

    
por RMD 14.06.2016 / 22:34

1 resposta

5

Atom vs RSS2

Vamos ver os arquivos wp-includes/feed-atom.php e wp-includes/feed-rss2.php .

O elemento updated da entrada do feed Atom é:

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

O elemento pubDate do item de feed 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>

O elemento lastBuildDate do canal RSS2 é:

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

Namespace

O feed RSS2 já contém o namespace Atom :

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

então, podemos usar o elemento <atom:updated> para nosso elemento personalizado atualizado . Você pode querer verificá-la ainda mais, se isso atender ao padrão ou se houver outros namespaces possíveis adequados para isso.

Para o último caso, podemos usar a ação rss2_ns para adicionar o namespace relevante.

Injetar um elemento personalizado

Podemos usar a ação rss2_item para injetar elementos de item 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 você possa ajustá-lo às suas necessidades.

    
por birgire 15.06.2016 / 08:23

Tags