Make WordPress Core

Changeset 36275


Ignore:
Timestamp:
01/13/2016 03:12:34 AM (11 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.