get_comment_pages_count( WP_Comment[] $comments = null, int $per_page = null, bool $threaded = null ): int

Calculates the total number of comment pages.


Parameters

$comments WP_Comment[] Optional
Array of WP_Comment objects. Defaults to $wp_query->comments.

Default: null

$per_page int Optional
Comments per page. Defaults to the value of comments_per_page query var, option of the same name, or 1 (in that order).

Default: null

$threaded bool Optional
Control over flat or threaded comments. Defaults to the value of thread_comments option.

Default: null


Top ↑

Return

int Number of comment pages.


Top ↑

Source

File: wp-includes/comment.php. View all references

function get_comment_pages_count( $comments = null, $per_page = null, $threaded = null ) {
	global $wp_query;

	if ( null === $comments && null === $per_page && null === $threaded && ! empty( $wp_query->max_num_comment_pages ) ) {
		return $wp_query->max_num_comment_pages;
	}

	if ( ( ! $comments || ! is_array( $comments ) ) && ! empty( $wp_query->comments ) ) {
		$comments = $wp_query->comments;
	}

	if ( empty( $comments ) ) {
		return 0;
	}

	if ( ! get_option( 'page_comments' ) ) {
		return 1;
	}

	if ( ! isset( $per_page ) ) {
		$per_page = (int) get_query_var( 'comments_per_page' );
	}
	if ( 0 === $per_page ) {
		$per_page = (int) get_option( 'comments_per_page' );
	}
	if ( 0 === $per_page ) {
		return 1;
	}

	if ( ! isset( $threaded ) ) {
		$threaded = get_option( 'thread_comments' );
	}

	if ( $threaded ) {
		$walker = new Walker_Comment();
		$count  = ceil( $walker->get_number_of_root_elements( $comments ) / $per_page );
	} else {
		$count = ceil( count( $comments ) / $per_page );
	}

	return $count;
}


Top ↑

Changelog

Changelog
Version Description
2.7.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 2 content
    Contributed by Codex

    Number of comments per page

    This will use the defaults for the number of comments per page and threading. You can use custom values like this:

    // Show 25 comments per page.
    $pages = get_comment_pages_count( null, 25 );
    
    // Don't thread comments.
    $pages = get_comment_pages_count( null, null, false ); 
    
    // Show 10 comments per page, use threading.
    $pages = get_comment_pages_count( null, 10, true ); 
  2. Skip to note 3 content
    Contributed by Codex

    Outside the loop

    When inside the loop, you can just pass null as the value for the $comment parameter, as shown above. You can also use the function outside the loop, but you need to pass in the array of comments. For example, you may perform a custom comment query using WP_Comment_Query:

    $args = array(
       // query args here
    );
    
    $comments_query = new WP_Comment_Query;
    $comments = $comments_query->query( $args );
    
    $pages = get_comment_pages_count( $comments );

You must log in before being able to contribute a note or feedback.