wp_count_comments( int $post_id )

Retrieves the total comment counts for the whole site or a single post.


Description

The comment stats are cached and then retrieved, if they already exist in the cache.

See also


Top ↑

Parameters

$post_id

(int) (Optional) Restrict the comment counts to the given post. Default 0, which indicates that comment counts for the whole site will be retrieved.


Top ↑

Return

(stdClass) The number of comments keyed by their status.

  • 'approved'
    (int|string) The number of approved comments.
  • 'moderated'
    (int|string) The number of comments awaiting moderation (a.k.a. pending).
  • 'spam'
    (int|string) The number of spam comments.
  • 'trash'
    (int|string) The number of trashed comments.
  • 'post-trashed'
    (int|string) The number of comments for posts that are in the trash.
  • 'total_comments'
    (int) The total number of non-trashed comments, including spam.
  • 'all'
    (int) The total number of pending or approved comments.

Top ↑

Source

File: wp-includes/comment.php

function wp_count_comments( $post_id = 0 ) {
	$post_id = (int) $post_id;

	/**
	 * Filters the comments count for a given post or the whole site.
	 *
	 * @since 2.7.0
	 *
	 * @param array|stdClass $count   An empty array or an object containing comment counts.
	 * @param int            $post_id The post ID. Can be 0 to represent the whole site.
	 */
	$filtered = apply_filters( 'wp_count_comments', array(), $post_id );
	if ( ! empty( $filtered ) ) {
		return $filtered;
	}

	$count = wp_cache_get( "comments-{$post_id}", 'counts' );
	if ( false !== $count ) {
		return $count;
	}

	$stats              = get_comment_count( $post_id );
	$stats['moderated'] = $stats['awaiting_moderation'];
	unset( $stats['awaiting_moderation'] );

	$stats_object = (object) $stats;
	wp_cache_set( "comments-{$post_id}", $stats_object, 'counts' );

	return $stats_object;
}

Top ↑

Changelog

Version Description
2.5.0 Introduced.