WordPress/wp-includes/feed-rdf.php
Adam Silverstein 4268033aaf Feeds: ensure build/update date matches current query.
Displaying the correct build date in feeds is as important today as it was twelve years ago when this ticket was opened.

Fix an issue where all feeds in WordPress showed the same date for their last build date (the datapoint is `lastBuildDate`, `updated` or `dc:date` depending on the feed type). 

Introduce a new `get_last_build_date` filter to adjust the date used for `lastBuildDate`. Developers who previously filtered `get_lastcommentmodified` to alter feed dates should use this filter instead.

* `get_last_build_date` extracts the latest post (or comment) in the current WP_Query object.
* In all feed templates, use `get_last_build_date` vs `get_lastpostmodified( 'GMT' );`.

Props stevenkword, spacedmonkey, ryanshoover, mauteri, nacin, jorbin, MikeNGarrett, Denis-de-Bernardy, peaceablewhale.
Fixes #4575.


Built from https://develop.svn.wordpress.org/trunk@44948


git-svn-id: http://core.svn.wordpress.org/trunk@44779 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-20 20:39:00 +00:00

102 lines
2.7 KiB
PHP

<?php
/**
* RSS 1 RDF Feed Template for displaying RSS 1 Posts feed.
*
* @package WordPress
*/
header( 'Content-Type: ' . feed_content_type( 'rdf' ) . '; charset=' . get_option( 'blog_charset' ), true );
$more = 1;
echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>';
/** This action is documented in wp-includes/feed-rss2.php */
do_action( 'rss_tag_pre', 'rdf' );
?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
<?php
/**
* Fires at the end of the feed root to add namespaces.
*
* @since 2.0.0
*/
do_action( 'rdf_ns' );
?>
>
<channel rdf:about="<?php bloginfo_rss( 'url' ); ?>">
<title><?php wp_title_rss(); ?></title>
<link><?php bloginfo_rss( 'url' ); ?></link>
<description><?php bloginfo_rss( 'description' ); ?></description>
<dc:date>
<?php
$date = get_last_build_date();
echo $date ? mysql2date( 'Y-m-d\TH:i:s\Z', $date ) : date( 'Y-m-d\TH:i:s\Z' );
?>
</dc:date>
<sy:updatePeriod>
<?php
/** This filter is documented in wp-includes/feed-rss2.php */
echo apply_filters( 'rss_update_period', 'hourly' );
?>
</sy:updatePeriod>
<sy:updateFrequency>
<?php
/** This filter is documented in wp-includes/feed-rss2.php */
echo apply_filters( 'rss_update_frequency', '1' );
?>
</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
<?php
/**
* Fires at the end of the RDF feed header.
*
* @since 2.0.0
*/
do_action( 'rdf_header' );
?>
<items>
<rdf:Seq>
<?php
while ( have_posts() ) :
the_post();
?>
<rdf:li rdf:resource="<?php the_permalink_rss(); ?>"/>
<?php endwhile; ?>
</rdf:Seq>
</items>
</channel>
<?php
rewind_posts();
while ( have_posts() ) :
the_post();
?>
<item rdf:about="<?php the_permalink_rss(); ?>">
<title><?php the_title_rss(); ?></title>
<link><?php the_permalink_rss(); ?></link>
<dc:date><?php echo mysql2date( 'Y-m-d\TH:i:s\Z', $post->post_date_gmt, false ); ?></dc:date>
<dc:creator><![CDATA[<?php the_author(); ?>]]></dc:creator>
<?php the_category_rss( 'rdf' ); ?>
<?php if ( get_option( 'rss_use_excerpt' ) ) : ?>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<?php else : ?>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<content:encoded><![CDATA[<?php the_content_feed( 'rdf' ); ?>]]></content:encoded>
<?php endif; ?>
<?php
/**
* Fires at the end of each RDF feed item.
*
* @since 2.0.0
*/
do_action( 'rdf_item' );
?>
</item>
<?php endwhile; ?>
</rdf:RDF>