Don't return encoded ampersands from get_post_comments_feed_link() to avoid canonical redirect issues. Apply esc_url() when appropriate.

props markjaquith, SergeyBiryukov. fixes #21841.



git-svn-id: http://core.svn.wordpress.org/trunk@22431 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Nacin 2012-11-07 19:56:10 +00:00
parent dc40f18228
commit 30d048a1e7
5 changed files with 8 additions and 8 deletions

View File

@ -1215,7 +1215,7 @@ function get_author_rss_link($echo = false, $author_id = 1) {
*/ */
function comments_rss() { function comments_rss() {
_deprecated_function( __FUNCTION__, '2.2', 'get_post_comments_feed_link()' ); _deprecated_function( __FUNCTION__, '2.2', 'get_post_comments_feed_link()' );
return get_post_comments_feed_link(); return esc_url( get_post_comments_feed_link() );
} }
/** /**

View File

@ -28,8 +28,8 @@ echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>'
<?php if ( is_singular() ) { ?> <?php if ( is_singular() ) { ?>
<link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php comments_link_feed(); ?>" /> <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php comments_link_feed(); ?>" />
<link rel="self" type="application/atom+xml" href="<?php echo get_post_comments_feed_link('', 'atom'); ?>" /> <link rel="self" type="application/atom+xml" href="<?php echo esc_url( get_post_comments_feed_link('', 'atom') ); ?>" />
<id><?php echo get_post_comments_feed_link('', 'atom'); ?></id> <id><?php echo esc_url( get_post_comments_feed_link('', 'atom') ); ?></id>
<?php } elseif(is_search()) { ?> <?php } elseif(is_search()) { ?>
<link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php echo home_url() . '?s=' . get_search_query(); ?>" /> <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php echo home_url() . '?s=' . get_search_query(); ?>" />
<link rel="self" type="application/atom+xml" href="<?php echo get_search_comments_feed_link('', 'atom'); ?>" /> <link rel="self" type="application/atom+xml" href="<?php echo get_search_comments_feed_link('', 'atom'); ?>" />

View File

@ -48,7 +48,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<?php atom_enclosure(); ?> <?php atom_enclosure(); ?>
<?php do_action('atom_entry'); ?> <?php do_action('atom_entry'); ?>
<link rel="replies" type="<?php bloginfo_rss('html_type'); ?>" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/> <link rel="replies" type="<?php bloginfo_rss('html_type'); ?>" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/>
<link rel="replies" type="application/atom+xml" href="<?php echo get_post_comments_feed_link(0,'atom') ?>" thr:count="<?php echo get_comments_number()?>"/> <link rel="replies" type="application/atom+xml" href="<?php echo esc_url( get_post_comments_feed_link(0, 'atom') ); ?>" thr:count="<?php echo get_comments_number()?>"/>
<thr:total><?php echo get_comments_number()?></thr:total> <thr:total><?php echo get_comments_number()?></thr:total>
</entry> </entry>
<?php endwhile ; ?> <?php endwhile ; ?>

View File

@ -484,9 +484,9 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
} else { } else {
$type = get_post_field('post_type', $post_id); $type = get_post_field('post_type', $post_id);
if ( 'page' == $type ) if ( 'page' == $type )
$url = home_url("?feed=$feed&amp;page_id=$post_id"); $url = add_query_arg( array( 'feed' => $feed, 'page_id' => $post_id ), home_url( '/' ) );
else else
$url = home_url("?feed=$feed&amp;p=$post_id"); $url = add_query_arg( array( 'feed' => $feed, 'p' => $post_id ), home_url( '/' ) );
} }
return apply_filters('post_comments_feed_link', $url); return apply_filters('post_comments_feed_link', $url);
@ -509,7 +509,7 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
* @return string Link to the comment feed for the current post. * @return string Link to the comment feed for the current post.
*/ */
function post_comments_feed_link( $link_text = '', $post_id = '', $feed = '' ) { function post_comments_feed_link( $link_text = '', $post_id = '', $feed = '' ) {
$url = get_post_comments_feed_link($post_id, $feed); $url = esc_url( get_post_comments_feed_link( $post_id, $feed ) );
if ( empty($link_text) ) if ( empty($link_text) )
$link_text = __('Comments Feed'); $link_text = __('Comments Feed');

View File

@ -32,7 +32,7 @@ while( have_posts()) : the_post();
?> ?>
<h2 id="comments"><?php _e('Comments'); ?></h2> <h2 id="comments"><?php _e('Comments'); ?></h2>
<p><a href="<?php echo get_post_comments_feed_link($post->ID); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.'); ?></a></p> <p><a href="<?php echo esc_url( get_post_comments_feed_link($post->ID) ); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.'); ?></a></p>
<?php if ( pings_open() ) { ?> <?php if ( pings_open() ) { ?>
<p><?php printf(__('The <abbr title="Universal Resource Locator">URL</abbr> to TrackBack this entry is: <em>%s</em>'), get_trackback_url()); ?></p> <p><?php printf(__('The <abbr title="Universal Resource Locator">URL</abbr> to TrackBack this entry is: <em>%s</em>'), get_trackback_url()); ?></p>