@@ -1910,27 +1910,6 @@ function wp_list_comments( $args = array(), $comments = null ) {
19101910 */
19111911 $ r = apply_filters ( 'wp_list_comments_args ' , $ r );
19121912
1913- /*
1914- * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
1915- * perform a separate comment query and allow Walker_Comment to paginate.
1916- */
1917- if ( is_singular () && ( $ r ['page ' ] || $ r ['per_page ' ] ) ) {
1918- $ current_cpage = get_query_var ( 'cpage ' );
1919- if ( ! $ current_cpage ) {
1920- $ current_cpage = 'newest ' === get_option ( 'default_comments_page ' ) ? 1 : $ wp_query ->max_num_comment_pages ;
1921- }
1922-
1923- $ current_per_page = get_query_var ( 'comments_per_page ' );
1924- if ( $ r ['page ' ] != $ current_cpage || $ r ['per_page ' ] != $ current_per_page ) {
1925- $ comments = get_comments ( array (
1926- 'post_id ' => get_queried_object_id (),
1927- 'orderby ' => 'comment_date_gmt ' ,
1928- 'order ' => 'ASC ' ,
1929- 'status ' => 'all ' ,
1930- ) );
1931- }
1932- }
1933-
19341913 // Figure out what comments we'll be looping through ($_comments)
19351914 if ( null !== $ comments ) {
19361915 $ comments = (array ) $ comments ;
@@ -1945,34 +1924,70 @@ function wp_list_comments( $args = array(), $comments = null ) {
19451924 $ _comments = $ comments ;
19461925 }
19471926 } else {
1948- if ( empty ($ wp_query ->comments ) )
1949- return ;
1950- if ( 'all ' != $ r ['type ' ] ) {
1951- if ( empty ($ wp_query ->comments_by_type ) )
1952- $ wp_query ->comments_by_type = separate_comments ($ wp_query ->comments );
1953- if ( empty ($ wp_query ->comments_by_type [$ r ['type ' ]]) )
1954- return ;
1955- $ _comments = $ wp_query ->comments_by_type [$ r ['type ' ]];
1956- } else {
1957- $ _comments = $ wp_query ->comments ;
1958- }
1927+ /*
1928+ * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
1929+ * perform a separate comment query and allow Walker_Comment to paginate.
1930+ */
1931+ if ( is_singular () && ( $ r ['page ' ] || $ r ['per_page ' ] ) ) {
1932+ $ current_cpage = get_query_var ( 'cpage ' );
1933+ if ( ! $ current_cpage ) {
1934+ $ current_cpage = 'newest ' === get_option ( 'default_comments_page ' ) ? 1 : $ wp_query ->max_num_comment_pages ;
1935+ }
19591936
1960- // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
1961- if ( $ wp_query ->max_num_comment_pages ) {
1962- $ default_comments_page = get_option ( 'default_comments_page ' );
1963- $ cpage = get_query_var ( 'cpage ' );
1964- if ( 'newest ' === $ default_comments_page ) {
1965- $ r ['cpage ' ] = $ cpage ;
1937+ $ current_per_page = get_query_var ( 'comments_per_page ' );
1938+ if ( $ r ['page ' ] != $ current_cpage || $ r ['per_page ' ] != $ current_per_page ) {
1939+ $ comments = get_comments ( array (
1940+ 'post_id ' => get_queried_object_id (),
1941+ 'orderby ' => 'comment_date_gmt ' ,
1942+ 'order ' => 'ASC ' ,
1943+ 'status ' => 'all ' ,
1944+ ) );
1945+
1946+ if ( 'all ' != $ r ['type ' ] ) {
1947+ $ comments_by_type = separate_comments ( $ comments );
1948+ if ( empty ( $ comments_by_type [ $ r ['type ' ] ] ) ) {
1949+ return ;
1950+ }
1951+
1952+ $ _comments = $ comments_by_type [ $ r ['type ' ] ];
1953+ } else {
1954+ $ _comments = $ comments ;
1955+ }
1956+ }
19661957
1967- // When first page shows oldest comments, post permalink is the same as the comment permalink.
1968- } elseif ( $ cpage == 1 ) {
1969- $ r ['cpage ' ] = '' ;
1958+ // Otherwise, fall back on the comments from `$wp_query->comments`.
1959+ } else {
1960+ if ( empty ($ wp_query ->comments ) )
1961+ return ;
1962+ if ( 'all ' != $ r ['type ' ] ) {
1963+ if ( empty ($ wp_query ->comments_by_type ) )
1964+ $ wp_query ->comments_by_type = separate_comments ($ wp_query ->comments );
1965+ if ( empty ($ wp_query ->comments_by_type [$ r ['type ' ]]) )
1966+ return ;
1967+ $ _comments = $ wp_query ->comments_by_type [$ r ['type ' ]];
19701968 } else {
1971- $ r [ ' cpage ' ] = $ cpage ;
1969+ $ _comments = $ wp_query -> comments ;
19721970 }
19731971
1974- $ r ['page ' ] = 0 ;
1975- $ r ['per_page ' ] = 0 ;
1972+ if ( $ wp_query ->max_num_comment_pages ) {
1973+ $ default_comments_page = get_option ( 'default_comments_page ' );
1974+ $ cpage = get_query_var ( 'cpage ' );
1975+ if ( 'newest ' === $ default_comments_page ) {
1976+ $ r ['cpage ' ] = $ cpage ;
1977+
1978+ /*
1979+ * When first page shows oldest comments, post permalink is the same as
1980+ * the comment permalink.
1981+ */
1982+ } elseif ( $ cpage == 1 ) {
1983+ $ r ['cpage ' ] = '' ;
1984+ } else {
1985+ $ r ['cpage ' ] = $ cpage ;
1986+ }
1987+
1988+ $ r ['page ' ] = 0 ;
1989+ $ r ['per_page ' ] = 0 ;
1990+ }
19761991 }
19771992 }
19781993
0 commit comments