Make WordPress Core

Ticket #37103: 37103.patch

File 37103.patch, 2.8 KB (added by keesiemeijer, 7 years ago)

Replace % in post titles and add unit tests

  • src/wp-includes/comment-template.php

     
    14881488 *                          Default false.
    14891489 */
    14901490function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) {
    1491         $id = get_the_ID();
    1492         $title = get_the_title();
     1491        $id     = get_the_ID();
     1492        $title  = get_the_title();
    14931493        $number = get_comments_number( $id );
    14941494
    14951495        if ( false === $zero ) {
     
    15031503        }
    15041504
    15051505        if ( false === $more ) {
     1506                // Replace '%' characters with '__PERCENT__' in post titles to prevent it being replaced with the comment count.
     1507                $_title = str_replace( '%', '__PERCENT__', $title );
     1508
    15061509                /* translators: 1: Number of comments 2: post title */
    1507                 $more = _n( '%1$s Comment<span class="screen-reader-text"> on %2$s</span>', '%1$s Comments<span class="screen-reader-text"> on %2$s</span>', $number );
    1508                 $more = sprintf( $more, number_format_i18n( $number ), $title );
     1510                $more  = _n( '%1$s Comment<span class="screen-reader-text"> on %2$s</span>', '%1$s Comments<span class="screen-reader-text"> on %2$s</span>', $number );
     1511                $more  = sprintf( $more, number_format_i18n( $number ), $_title );
    15091512        }
    15101513
    15111514        if ( false === $none ) {
     
    15231526                return;
    15241527        }
    15251528
     1529        $text = get_comments_number_text( $zero, $one, $more );
     1530        if( isset( $_title ) ) {
     1531                $text = str_replace( '__PERCENT__', '%', $text );
     1532        }
     1533
    15261534        echo '<a href="';
    15271535        if ( 0 == $number ) {
    15281536                $respond_link = get_permalink() . '#respond';
     
    15411549        echo '"';
    15421550
    15431551        if ( !empty( $css_class ) ) {
    1544                 echo ' class="'.$css_class.'" ';
     1552                echo ' class="' . $css_class . '" ';
    15451553        }
    15461554
    15471555        $attributes = '';
     
    15541562         */
    15551563        echo apply_filters( 'comments_popup_link_attributes', $attributes );
    15561564
    1557         echo '>';
    1558         comments_number( $zero, $one, $more );
    1559         echo '</a>';
     1565        echo '>' . $text . '</a>';
    15601566}
    15611567
    15621568/**
  • tests/phpunit/tests/comment/template.php

     
    3131        }
    3232
    3333        /**
     34         * @ticket 37103
     35         */
     36        function test_comments_popup_link_post_title(){
     37                $post_id = $this->factory->post->create( array( 'post_title' => '%Hello %% World%' ) );
     38                $permalink = get_permalink( $post_id );
     39
     40                $this->factory->comment->create_post_comments( $post_id, 2 );
     41                $this->go_to( $permalink );
     42
     43                ob_start();
     44                comments_popup_link();
     45                $comment_link = ob_get_clean();
     46
     47                $this->assertContains( '%Hello %% World%', $comment_link );
     48        }
     49
     50        /**
    3451         * @ticket 13651
    3552         */
    3653        function test_get_comments_number_text_declension_with_default_args() {