Make WordPress Core

Changeset 53125


Ignore:
Timestamp:
04/11/2022 05:01:04 AM (5 years ago)
Author:
peterwilsoncc
Message:

Feeds: Remove comment feed HTML headers when empty.

Remove the link[rel=alternate] element from the HTML header when the comment feeds are disabled. Previously the HTML element was output with an empty href attribute.

The element is removed if get_post_comments_feed_link() returns an empty string or the feed is disabled via the feed_links_show_comments_feed filter.

Props barryceelen, audrasjb, costdev, rachelbaker, Boniu91.
Fixes #54703.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/general-template.php

    r53087 r53125  
    31543154                $post = get_post( $id );
    31553155
    3156                 if ( comments_open() || pings_open() || $post->comment_count > 0 ) {
    3157                         $title = sprintf( $args['singletitle'], get_bloginfo( 'name' ), $args['separator'], the_title_attribute( array( 'echo' => false ) ) );
    3158                         $href  = get_post_comments_feed_link( $post->ID );
     3156                /** This filter is documented in wp-includes/general-template.php */
     3157                $show_comments_feed = apply_filters( 'feed_links_show_comments_feed', true );
     3158
     3159                if ( $show_comments_feed && ( comments_open() || pings_open() || $post->comment_count > 0 ) ) {
     3160                        $title     = sprintf( $args['singletitle'], get_bloginfo( 'name' ), $args['separator'], the_title_attribute( array( 'echo' => false ) ) );
     3161                        $feed_link = get_post_comments_feed_link( $post->ID );
     3162
     3163                        if ( $feed_link ) {
     3164                                $href = $feed_link;
     3165                        }
    31593166                }
    31603167        } elseif ( is_post_type_archive() ) {
  • trunk/tests/phpunit/tests/general/feedLinksExtra.php

    r53033 r53125  
    511511                $this->assertSame( $expected, get_echo( 'feed_links_extra' ) );
    512512        }
     513
     514        /**
     515         * @ticket 54703
     516         */
     517        public function test_feed_links_extra_should_output_nothing_when_show_comments_feed_filter_returns_false() {
     518                add_filter( 'feed_links_show_comments_feed', '__return_false' );
     519
     520                $this->go_to( get_the_permalink( self::$post_with_comment_id ) );
     521                $this->assertEmpty( get_echo( 'feed_links_extra' ) );
     522        }
     523
     524        /**
     525         * @dataProvider data_feed_links_extra_should_output_nothing_when_post_comments_feed_link_is_falsy
     526         *
     527         * @ticket 54703
     528         *
     529         * @param string $callback The callback to use for the 'post_comments_feed_link' filter.
     530         */
     531        public function test_feed_links_extra_should_output_nothing_when_post_comments_feed_link_is_falsy( $callback ) {
     532                add_filter( 'post_comments_feed_link', $callback );
     533
     534                $this->go_to( get_the_permalink( self::$post_with_comment_id ) );
     535                $this->assertEmpty( get_echo( 'feed_links_extra' ) );
     536        }
     537
     538        /**
     539         * Data provider.
     540         *
     541         * @return array
     542         */
     543        public function data_feed_links_extra_should_output_nothing_when_post_comments_feed_link_is_falsy() {
     544                return array(
     545                        'empty string' => array( 'callback' => '__return_empty_string' ),
     546                        'empty array'  => array( 'callback' => '__return_empty_array' ),
     547                        'zero int'     => array( 'callback' => '__return_zero' ),
     548                        'zero float'   => array( 'callback' => array( $this, 'cb_return_zero_float' ) ),
     549                        'zero string'  => array( 'callback' => array( $this, 'cb_return_zero_string' ) ),
     550                        'null'         => array( 'callback' => '__return_null' ),
     551                        'false'        => array( 'callback' => '__return_false' ),
     552                );
     553        }
     554
     555        /**
     556         * Callback that returns 0.0.
     557         *
     558         * @return float 0.0.
     559         */
     560        public function cb_return_zero_float() {
     561                return 0.0;
     562        }
     563
     564        /**
     565         * Callback that returns '0'.
     566         *
     567         * @return string '0'.
     568         */
     569        public function cb_return_zero_string() {
     570                return '0';
     571        }
     572
     573        /**
     574         * @ticket 54703
     575         */
     576        public function test_feed_links_extra_should_output_the_comments_feed_link_when_show_comments_feed_filter_returns_true() {
     577                add_filter( 'feed_links_show_comments_feed', '__return_true' );
     578
     579                $this->go_to( get_the_permalink( self::$post_with_comment_id ) );
     580                $this->assertNotEmpty( get_echo( 'feed_links_extra' ) );
     581        }
    513582}
Note: See TracChangeset for help on using the changeset viewer.