Make WordPress Core


Ignore:
Timestamp:
01/08/2016 10:16:11 PM (9 years ago)
Author:
boonebgorges
Message:

In comments_template(), don't run hierarchical queries if comment threading is disabled.

When hierarchical=true, WP_Comment_Query will always fetch comments according
to the comment hierarchy, even if 'thread_comments' is disabled for the site.
This can cause problems when comment threading is disabled after threaded
comments have been recorded on the site; comments will no longer be returned in
a strictly chronological order.

We address the issue by refraining from querying hierarchically when comment
threading is disabled.

Props jmdodd.
Fixes #35378.

File:
1 edited

Legend:

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

    r36157 r36226  
    12871287        'status'  => 'approve',
    12881288        'post_id' => $post->ID,
    1289         'hierarchical' => 'threaded',
    12901289        'no_found_rows' => false,
    12911290        'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
    12921291    );
     1292
     1293    if ( get_option('thread_comments') ) {
     1294        $comment_args['hierarchical'] = 'threaded';
     1295    } else {
     1296        $comment_args['hierarchical'] = false;
     1297    }
    12931298
    12941299    if ( $user_ID ) {
     
    13371342
    13381343    // Trees must be flattened before they're passed to the walker.
    1339     $comments_flat = array();
    1340     foreach ( $_comments as $_comment ) {
    1341         $comments_flat[]  = $_comment;
    1342         $comment_children = $_comment->get_children( array(
    1343             'format' => 'flat',
    1344             'status' => $comment_args['status'],
    1345             'orderby' => $comment_args['orderby']
    1346         ) );
    1347 
    1348         foreach ( $comment_children as $comment_child ) {
    1349             $comments_flat[] = $comment_child;
     1344    if ( $comment_args['hierarchical'] ) {
     1345        $comments_flat = array();
     1346        foreach ( $_comments as $_comment ) {
     1347            $comments_flat[]  = $_comment;
     1348            $comment_children = $_comment->get_children( array(
     1349                'format' => 'flat',
     1350                'status' => $comment_args['status'],
     1351                'orderby' => $comment_args['orderby']
     1352            ) );
     1353
     1354            foreach ( $comment_children as $comment_child ) {
     1355                $comments_flat[] = $comment_child;
     1356            }
    13501357        }
     1358    } else {
     1359        $comments_flat = $_comments;
    13511360    }
    13521361
Note: See TracChangeset for help on using the changeset viewer.