WordPress.org

Make WordPress Core

Ticket #11248: 11248.patch

File 11248.patch, 6.6 KB (added by couturefreak, 6 years ago)

Displays last page of comments, and fixes the resulting comment pagination links.

  • wp-includes/comment-template.php

     
    20602060                if ( empty($wp_query->comments) )
    20612061                        return;
    20622062                if ( 'all' != $r['type'] ) {
    2063                         if ( empty($wp_query->comments_by_type) )
    2064                                 $wp_query->comments_by_type = separate_comments($wp_query->comments);
    2065                         if ( empty($wp_query->comments_by_type[$r['type']]) )
     2063                        if ( empty( $wp_query->comments_by_type ) )
     2064                                $wp_query->comments_by_type = separate_comments( $wp_query->comments );
     2065                        if ( empty( $wp_query->comments_by_type[$r['type']] ) )
    20662066                                return;
    20672067                        $_comments = $wp_query->comments_by_type[$r['type']];
    20682068                } else {
     
    20702070                }
    20712071        }
    20722072
    2073         if ( '' === $r['per_page'] && get_option('page_comments') )
    2074                 $r['per_page'] = get_query_var('comments_per_page');
     2073        if ( '' === $r['per_page'] && get_option( 'page_comments' ) )
     2074                $r['per_page'] = get_query_var( 'comments_per_page' );
    20752075
    2076         if ( empty($r['per_page']) ) {
     2076        if ( empty( $r['per_page'] ) ) {
    20772077                $r['per_page'] = 0;
    20782078                $r['page'] = 0;
    20792079        }
    20802080
    20812081        if ( '' === $r['max_depth'] ) {
    2082                 if ( get_option('thread_comments') )
    2083                         $r['max_depth'] = get_option('thread_comments_depth');
     2082                if ( get_option( 'thread_comments' ) )
     2083                        $r['max_depth'] = get_option( 'thread_comments_depth' );
    20842084                else
    20852085                        $r['max_depth'] = -1;
    20862086        }
    20872087
    20882088        if ( '' === $r['page'] ) {
    2089                 if ( empty($overridden_cpage) ) {
    2090                         $r['page'] = get_query_var('cpage');
     2089                if ( empty( $overridden_cpage ) ) {
     2090                        $r['page'] = get_query_var( 'cpage' );
    20912091                } else {
    20922092                        $threaded = ( -1 != $r['max_depth'] );
    2093                         $r['page'] = ( 'newest' == get_option('default_comments_page') ) ? get_comment_pages_count($_comments, $r['per_page'], $threaded) : 1;
     2093                        $r['page'] = ( 'newest' == get_option( 'default_comments_page' ) ) ? get_comment_pages_count( $_comments, $r['per_page'], $threaded ) : 1;
    20942094                        set_query_var( 'cpage', $r['page'] );
    20952095                }
    20962096        }
    20972097        // Validation check
    2098         $r['page'] = intval($r['page']);
     2098        $r['page'] = intval( $r['page'] );
    20992099        if ( 0 == $r['page'] && 0 != $r['per_page'] )
    21002100                $r['page'] = 1;
    21012101
    21022102        if ( null === $r['reverse_top_level'] )
    2103                 $r['reverse_top_level'] = ( 'desc' == get_option('comment_order') );
     2103                $r['reverse_top_level'] = ( 'desc' == get_option( 'comment_order' ) );
    21042104
    21052105        if ( empty( $r['walker'] ) ) {
    21062106                $walker = new Walker_Comment;
     
    21092109        }
    21102110
    21112111        $output = $walker->paged_walk( $_comments, $r['max_depth'], $r['page'], $r['per_page'], $r );
    2112         $wp_query->max_num_comment_pages = $walker->max_pages;
    21132112
     2113        // When requested comment page does not exist, display last page of comments.
     2114        if ( $r['page'] > intval( $walker->max_pages ) ) {
     2115                $r['page'] = intval( $walker->max_pages );
     2116                set_query_var( 'cpage', $r['page'] );
     2117                $output = $walker->paged_walk( $_comments, $r['max_depth'], $r['page'], $r['per_page'], $r );
     2118        }
     2119
     2120        $wp_query->max_num_comment_pages = intval( $walker->max_pages );
     2121
    21142122        $in_comment_loop = false;
    21152123
    21162124        if ( $r['echo'] ) {
  • wp-includes/link-template.php

     
    24312431function get_next_comments_link( $label = '', $max_page = 0 ) {
    24322432        global $wp_query;
    24332433
    2434         if ( !is_singular() || !get_option('page_comments') )
     2434        if ( !is_singular() || !get_option( 'page_comments' ) )
    24352435                return;
    24362436
    2437         $page = get_query_var('cpage');
     2437        $page = get_query_var( 'cpage' );
    24382438
    2439         $nextpage = intval($page) + 1;
     2439        $nextpage = intval( $page ) + 1;
    24402440
    2441         if ( empty($max_page) )
     2441        if ( empty( $max_page ) )
    24422442                $max_page = $wp_query->max_num_comment_pages;
    24432443
    2444         if ( empty($max_page) )
     2444        if ( empty( $max_page ) )
    24452445                $max_page = get_comment_pages_count();
    24462446
    24472447        if ( $nextpage > $max_page )
    24482448                return;
    24492449
    2450         if ( empty($label) )
     2450        if ( empty( $label ) )
    24512451                $label = __('Newer Comments »');
    24522452
    24532453        /**
     
    24782478 * @since 2.7.1
    24792479 *
    24802480 * @param string $label Optional. Label for comments link text.
     2481 * @param int $max_page Optional. Max page.
    24812482 * @return string|null HTML-formatted link for the previous page of comments.
    24822483 */
    2483 function get_previous_comments_link( $label = '' ) {
    2484         if ( !is_singular() || !get_option('page_comments') )
     2484function get_previous_comments_link( $label = '', $max_page = 0 ) {
     2485        global $wp_query;
     2486
     2487        if ( !is_singular() || !get_option( 'page_comments' ) )
    24852488                return;
    24862489
    2487         $page = get_query_var('cpage');
     2490        $page = get_query_var( 'cpage' );
    24882491
    2489         if ( intval($page) <= 1 )
     2492        if ( empty( $max_page ) )
     2493                $max_page = $wp_query->max_num_comment_pages;
     2494
     2495        if ( empty( $max_page ) )
     2496                $max_page = get_comment_pages_count();
     2497
     2498        if ( intval( $page ) <= 1 )
    24902499                return;
    24912500
    2492         $prevpage = intval($page) - 1;
     2501        if ( intval( $page ) > $max_page )
     2502                $page = $max_page;
    24932503
    2494         if ( empty($label) )
    2495                 $label = __('&laquo; Older Comments');
     2504        $prevpage = intval( $page ) - 1;
    24962505
     2506        if ( empty( $label ) )
     2507                $label = __( '&laquo; Older Comments' );
     2508
    24972509        /**
    24982510         * Filter the anchor tag attributes for the previous comments page link.
    24992511         *
     
    25102522 * @since 2.7.0
    25112523 *
    25122524 * @param string $label Optional. Label for comments link text.
     2525 * @param int $max_page Optional. Max page.
    25132526 */
    2514 function previous_comments_link( $label = '' ) {
    2515         echo get_previous_comments_link( $label );
     2527function previous_comments_link( $label = '', $max_page = 0 ) {
     2528        echo get_previous_comments_link( $label, $max_page );
    25162529}
    25172530
    25182531/**
     
    25242537 * @param string|array $args Optional args. See paginate_links().
    25252538 * @return string Markup for pagination links.
    25262539*/
    2527 function paginate_comments_links($args = array()) {
     2540function paginate_comments_links( $args = array() ) {
    25282541        global $wp_rewrite;
    25292542
    2530         if ( !is_singular() || !get_option('page_comments') )
     2543        if ( !is_singular() || !get_option( 'page_comments' ) )
    25312544                return;
    25322545
    2533         $page = get_query_var('cpage');
    2534         if ( !$page )
     2546        $page = get_query_var( 'cpage' );
     2547
     2548        if ( !$page ) {
    25352549                $page = 1;
     2550        }
     2551
    25362552        $max_page = get_comment_pages_count();
     2553
    25372554        $defaults = array(
    25382555                'base' => add_query_arg( 'cpage', '%#%' ),
    25392556                'format' => '',
     
    25422559                'echo' => true,
    25432560                'add_fragment' => '#comments'
    25442561        );
    2545         if ( $wp_rewrite->using_permalinks() )
    2546                 $defaults['base'] = user_trailingslashit(trailingslashit(get_permalink()) . 'comment-page-%#%', 'commentpaged');
     2562        if ( $wp_rewrite->using_permalinks() ) {
     2563                $defaults['base'] = user_trailingslashit( trailingslashit( get_permalink() ) . 'comment-page-%#%', 'commentpaged' );
     2564        }
    25472565
    25482566        $args = wp_parse_args( $args, $defaults );
    25492567        $page_links = paginate_links( $args );
    25502568
    2551         if ( $args['echo'] )
     2569        if ( $args['echo'] ) {
    25522570                echo $page_links;
    2553         else
     2571        } else {
    25542572                return $page_links;
     2573        }
     2574
    25552575}
    25562576
    25572577/**