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
- get_comment_count(): Which handles fetching the live comment counts.
Parameters
$post_id
intoptional- Restrict the comment counts to the given post. Default 0, which indicates that comment counts for the whole site will be retrieved.
Source
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;
}
Hooks
- apply_filters( ‘wp_count_comments’,
array|stdClass $count ,int $post_id ) Filters the comments count for a given post or the whole site.
Changelog
Version | Description |
---|---|
2.5.0 | Introduced. |
Retrieve comment count for a post
Default usage
Retrieve comment count for a site.