WordPress.org

Make WordPress Core

Changeset 36275


Ignore:
Timestamp:
01/13/2016 03:12:34 AM (4 years ago)
Author:
boonebgorges
Message:

Ignore hierarchy in pagination calculation when comment threading is disabled.

In order to calculate comment pagination when newest comments are displayed
first, comments_template() must perform a separate query to determine the
total number of paginating comments available on a post. See [34729], #8071,
pagination calculation - can be defined as a top-level comment, or a comment
with parent=0. However, when comment threading is disabled, yet comments
exist in the database that have parents, all comments - even those with a
parent - are "paginating". (This typically happens when comments threading was
once enabled, but has since been turned off.) As such, the total-paginating-
comments query should only be limited to top-level comments when
'thread_comments' is disabled.

Props jmdodd.
Fixes #35419.

Location:
trunk
Files:
2 edited

Legend:

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

    r36272 r36275  
    13241324                'orderby' => false,
    13251325                'post_id' => $post->ID,
    1326                 'parent'  => 0,
    13271326                'status'  => 'approve',
    13281327            );
     1328
     1329            if ( $comment_args['hierarchical'] ) {
     1330                $top_level_args['parent'] = 0;
     1331            }
    13291332
    13301333            if ( isset( $comment_args['include_unapproved'] ) ) {
  • trunk/tests/phpunit/tests/comment/commentsTemplate.php

    r36226 r36275  
    729729        $this->assertSame( array( $comment_2, $comment_3, $comment_1 ), $found_cids );
    730730    }
     731
     732    /**
     733     * @ticket 35419
     734     */
     735    public function test_pagination_calculation_should_ignore_comment_hierarchy_when_threading_is_disabled() {
     736        $now = time();
     737        $p = self::factory()->post->create();
     738        $comment_1 = self::factory()->comment->create( array(
     739            'comment_post_ID' => $p,
     740            'comment_content' => '1',
     741            'comment_approved' => '1',
     742            'comment_date_gmt' => date( 'Y-m-d H:i:s', $now - 300 ),
     743        ) );
     744        $comment_2 = self::factory()->comment->create( array(
     745            'comment_post_ID' => $p,
     746            'comment_content' => '2',
     747            'comment_approved' => '1',
     748            'comment_date_gmt' => date( 'Y-m-d H:i:s', $now - 200 ),
     749        ) );
     750        $comment_3 = self::factory()->comment->create( array(
     751            'comment_post_ID' => $p,
     752            'comment_content' => '3',
     753            'comment_approved' => '1',
     754            'comment_parent' => $comment_1,
     755            'comment_date_gmt' => date( 'Y-m-d H:i:s', $now - 100 ),
     756        ) );
     757
     758        update_option( 'thread_comments', 0 );
     759
     760        update_option( 'comment_order', 'asc' );
     761        update_option( 'comments_per_page', 2 );
     762        update_option( 'page_comments', 1 );
     763        update_option( 'default_comments_page', 'newest' );
     764
     765        $this->go_to( get_permalink( $p ) );
     766        $found = get_echo( 'comments_template' );
     767
     768        // Find the found comments in the markup.
     769        preg_match_all( '|id="comment-([0-9]+)|', $found, $matches );
     770
     771        $found_cids = array_map( 'intval', $matches[1] );
     772        $this->assertSame( array( $comment_3 ), $found_cids );
     773    }
    731774}
Note: See TracChangeset for help on using the changeset viewer.