WordPress.org

Make WordPress Core

Ticket #11248: 11248.3.patch

File 11248.3.patch, 2.1 KB (added by tyxla, 4 years ago)

Updating the previous patch to use a more efficient way of getting the total comment pages (props @boonebgorges for the suggestion)

  • src/wp-includes/canonical.php

     
    319319                        }
    320320
    321321                        if ( ( 'newest' == get_option('default_comments_page') && get_query_var('cpage') > 0 ) || ( 'newest' != get_option('default_comments_page') && get_query_var('cpage') > 1 ) ) {
    322                                 $addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . get_query_var('cpage'), 'commentpaged' );
    323                                 $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
     322                                if ( $wp_query->post ) {
     323                                        $top_level_query = new WP_Comment_Query();
     324                                        $top_level_count = $top_level_query->query( array(
     325                                                'count'   => true,
     326                                                'orderby' => false,
     327                                                'post_id' => $wp_query->post->ID,
     328                                                'parent'  => 0,
     329                                        ) );
     330                                        $comments_per_page = get_option( 'comments_per_page' );
     331                                        $total_comment_pages = $comments_per_page ? ceil( $top_level_count / $comments_per_page ) : 1;
     332                                        if ( get_query_var('cpage') <= $total_comment_pages ) {
     333                                                $addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . get_query_var('cpage'), 'commentpaged' );
     334                                                $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
     335                                        }
     336                                }
    324337                        }
    325338
    326339                        $redirect['path'] = user_trailingslashit( preg_replace('|/' . preg_quote( $wp_rewrite->index, '|' ) . '/?$|', '/', $redirect['path']) ); // strip off trailing /index.php/
  • tests/phpunit/tests/canonical.php

     
    102102
    103103                        // Comments
    104104                        array( '/2008/03/03/comment-test/?cpage=2', '/2008/03/03/comment-test/comment-page-2/' ),
     105                        array( '/2008/03/03/comment-test/comment-page-4/', '/2008/03/03/comment-test/' ),
    105106
    106107                        // Attachments
    107108                        array( '/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),