WordPress.org

Make WordPress Core


Ignore:
File:
1 edited

Legend:

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

    r35748 r36362  
    737737    }
    738738
    739     if ( $cpage ) {
     739    if ( $cpage && get_option( 'page_comments' ) ) {
    740740        if ( $wp_rewrite->using_permalinks() ) {
    741741            if ( $cpage ) {
     
    12861286        'status'  => 'approve',
    12871287        'post_id' => $post->ID,
    1288         'hierarchical' => 'threaded',
    12891288        'no_found_rows' => false,
    12901289        'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
    12911290    );
     1291
     1292    if ( get_option('thread_comments') ) {
     1293        $comment_args['hierarchical'] = 'threaded';
     1294    } else {
     1295        $comment_args['hierarchical'] = false;
     1296    }
    12921297
    12931298    if ( $user_ID ) {
     
    13141319            // If fetching the first page of 'newest', we need a top-level comment count.
    13151320            $top_level_query = new WP_Comment_Query();
    1316             $top_level_count = $top_level_query->query( array(
     1321            $top_level_args  = array(
    13171322                'count'   => true,
    13181323                'orderby' => false,
    13191324                'post_id' => $post->ID,
    1320                 'parent'  => 0,
    1321             ) );
     1325                'status'  => 'approve',
     1326            );
     1327
     1328            if ( $comment_args['hierarchical'] ) {
     1329                $top_level_args['parent'] = 0;
     1330            }
     1331
     1332            if ( isset( $comment_args['include_unapproved'] ) ) {
     1333                $top_level_args['include_unapproved'] = $comment_args['include_unapproved'];
     1334            }
     1335
     1336            $top_level_count = $top_level_query->query( $top_level_args );
    13221337
    13231338            $comment_args['offset'] = ( ceil( $top_level_count / $per_page ) - 1 ) * $per_page;
     
    13291344
    13301345    // Trees must be flattened before they're passed to the walker.
    1331     $comments_flat = array();
    1332     foreach ( $_comments as $_comment ) {
    1333         $comments_flat = array_merge( $comments_flat, array( $_comment ), $_comment->get_children( array(
    1334             'format' => 'flat',
    1335             'status' => $comment_args['status'],
    1336             'orderby' => $comment_args['orderby']
    1337         ) ) );
     1346    if ( $comment_args['hierarchical'] ) {
     1347        $comments_flat = array();
     1348        foreach ( $_comments as $_comment ) {
     1349            $comments_flat[]  = $_comment;
     1350            $comment_children = $_comment->get_children( array(
     1351                'format' => 'flat',
     1352                'status' => $comment_args['status'],
     1353                'orderby' => $comment_args['orderby']
     1354            ) );
     1355
     1356            foreach ( $comment_children as $comment_child ) {
     1357                $comments_flat[] = $comment_child;
     1358            }
     1359        }
     1360    } else {
     1361        $comments_flat = $_comments;
    13381362    }
    13391363
     
    19281952        }
    19291953    } else {
    1930         if ( empty($wp_query->comments) )
    1931             return;
    1932         if ( 'all' != $r['type'] ) {
    1933             if ( empty($wp_query->comments_by_type) )
    1934                 $wp_query->comments_by_type = separate_comments($wp_query->comments);
    1935             if ( empty($wp_query->comments_by_type[$r['type']]) )
     1954        /*
     1955         * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
     1956         * perform a separate comment query and allow Walker_Comment to paginate.
     1957         */
     1958        if ( $r['page'] || $r['per_page'] ) {
     1959            $current_cpage = get_query_var( 'cpage' );
     1960            if ( ! $current_cpage ) {
     1961                $current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
     1962            }
     1963
     1964            $current_per_page = get_query_var( 'comments_per_page' );
     1965            if ( $r['page'] != $current_cpage || $r['per_page'] != $current_per_page ) {
     1966
     1967                $comments = get_comments( array(
     1968                    'post_id' => get_the_ID(),
     1969                    'orderby' => 'comment_date_gmt',
     1970                    'order' => 'ASC',
     1971                    'status' => 'all',
     1972                ) );
     1973
     1974                if ( 'all' != $r['type'] ) {
     1975                    $comments_by_type = separate_comments( $comments );
     1976                    if ( empty( $comments_by_type[ $r['type'] ] ) ) {
     1977                        return;
     1978                    }
     1979
     1980                    $_comments = $comments_by_type[ $r['type'] ];
     1981                } else {
     1982                    $_comments = $comments;
     1983                }
     1984            }
     1985
     1986        // Otherwise, fall back on the comments from `$wp_query->comments`.
     1987        } else {
     1988            if ( empty($wp_query->comments) )
    19361989                return;
    1937             $_comments = $wp_query->comments_by_type[$r['type']];
    1938         } else {
    1939             $_comments = $wp_query->comments;
    1940         }
    1941 
    1942         // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
    1943         if ( $wp_query->max_num_comment_pages ) {
    1944             $default_comments_page = get_option( 'default_comments_page' );
    1945             $cpage = get_query_var( 'cpage' );
    1946             if ( 'newest' === $default_comments_page ) {
    1947                 $r['cpage'] = $cpage;
    1948 
    1949             // When first page shows oldest comments, post permalink is the same as the comment permalink.
    1950             } elseif ( $cpage == 1 ) {
    1951                 $r['cpage'] = '';
     1990            if ( 'all' != $r['type'] ) {
     1991                if ( empty($wp_query->comments_by_type) )
     1992                    $wp_query->comments_by_type = separate_comments($wp_query->comments);
     1993                if ( empty($wp_query->comments_by_type[$r['type']]) )
     1994                    return;
     1995                $_comments = $wp_query->comments_by_type[$r['type']];
    19521996            } else {
    1953                 $r['cpage'] = $cpage;
     1997                $_comments = $wp_query->comments;
    19541998            }
    19551999
    1956             $r['page'] = 0;
    1957             $r['per_page'] = 0;
     2000            if ( $wp_query->max_num_comment_pages ) {
     2001                $default_comments_page = get_option( 'default_comments_page' );
     2002                $cpage = get_query_var( 'cpage' );
     2003                if ( 'newest' === $default_comments_page ) {
     2004                    $r['cpage'] = $cpage;
     2005
     2006                /*
     2007                 * When first page shows oldest comments, post permalink is the same as
     2008                 * the comment permalink.
     2009                 */
     2010                } elseif ( $cpage == 1 ) {
     2011                    $r['cpage'] = '';
     2012                } else {
     2013                    $r['cpage'] = $cpage;
     2014                }
     2015
     2016                $r['page'] = 0;
     2017                $r['per_page'] = 0;
     2018            }
    19582019        }
    19592020    }
Note: See TracChangeset for help on using the changeset viewer.