Make WordPress Core

Ticket #50233: 50233.3.diff

File 50233.3.diff, 2.3 KB (added by audrasjb, 4 years ago)

patch refreshed against trunk, coding standards fixes and @since refresh

  • src/wp-includes/canonical.php

    diff --git a/src/wp-includes/canonical.php b/src/wp-includes/canonical.php
    index 184fb756e8..fbe7c3e471 100644
    a b  
    2727 * or query in an attempt to figure the correct page to go to.
    2828 *
    2929 * @since 2.3.0
     30 * @since 5.8.0 Checks comment page count to limit pagination.
    3031 *
    3132 * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
    3233 * @global bool       $is_IIS
    function redirect_canonical( $requested_url = null, $do_redirect = true ) { 
    504505                                && ( 'newest' === $default_comments_page && $cpage > 0
    505506                                        || 'newest' !== $default_comments_page && $cpage > 1 )
    506507                        ) {
    507                                 $addl_path  = ( ! empty( $addl_path ) ? trailingslashit( $addl_path ) : '' );
    508                                 $addl_path .= user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . $cpage, 'commentpaged' );
     508                                // Checks comment page count to limit pagination.
     509                                $per_page             = get_option( 'comments_per_page' );
     510                                // Get the total number of pages for comments.
     511                                $comments_total_pages = ceil( ( $wp_query->post->comment_count ) / $per_page );
     512                                if ( $cpage <= $comments_total_pages ) {
     513                                        $addl_path  = ( ! empty( $addl_path ) ? trailingslashit( $addl_path ) : '' );
     514                                        $addl_path .= user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . $cpage, 'commentpaged' );
     515                                }
    509516
    510517                                $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
    511518                        }
  • tests/phpunit/tests/link/wpGetCanonicalUrl.php

    diff --git a/tests/phpunit/tests/link/wpGetCanonicalUrl.php b/tests/phpunit/tests/link/wpGetCanonicalUrl.php
    index 5b7eddaada..a48f430b42 100644
    a b class Tests_Link_wpGetCanonicalUrl extends WP_UnitTestCase { 
    151151                $this->assertSame( $this->canonical_url_filter(), $canonical_url );
    152152        }
    153153
     154        /**
     155         * Limit pagination for comments.
     156         *
     157         *  @ticket 50233
     158         */
     159        public function test_comments_limit_paged_with_plain_permalink_structure() {
     160                $cpage = 5;
     161
     162                $link = add_query_arg(
     163                        array(
     164                                'cpage' => $cpage,
     165                                'foo'   => 'bar',
     166                        ),
     167                        get_permalink( self::$post_id )
     168                );
     169
     170                $this->go_to( $link );
     171                $expected = get_permalink( self::$post_id ) . '#comments';
     172                $this->assertSame( $expected, wp_get_canonical_url( self::$post_id ) );
     173        }
     174
    154175        /**
    155176         * Filter callback for testing of filter usage.
    156177         *