wp_count_comments()WP 2.5.0

Получает данные о количестве комментариев на сайте или отдельно для указанного поста. Данные собираются отдельно по типам комментов (все варианты поля comment_approved: approved, spam и т.д.).

Если нужно получить количество постов (опубликованных, черновиков, на утверждении и т.д.), используйте wp_count_posts().

Работает на основе: get_comment_count()
Хуки из функции

Возвращает

stdClass. Объект со значениями:

stdClass Object
(
	[approved] => 49
	[total_comments] => 49
	[moderated] => 0
	[spam] => 0
	[trash] => 0
	[post-trashed] => 0
)

Использование

wp_count_comments( $post_id );
$post_id(число)
ID поста, для которого нужно получить данные о комментариях.
По умолчанию: 0

Примеры

0

#1 Получим количество комментариев для сайта в целом:

$comments_count = wp_count_comments();

echo "Статистика комментариев сайта: <br>";
echo "На модерации: " . $comments_count->moderated . "<br>"; 
echo "Утвержденные: " . $comments_count->approved . "<br>";
echo "Помеченные как спам: " . $comments_count->spam . "<br>";
echo "Комментов в корзине: " . $comments_count->trash . "<br>";
echo "Всего комментариев: " . $comments_count->total_comments . "<br>";

В итоге на экран выведется такая информация:

Статистика комментариев сайта:
На модерации: 0
Утвержденные: 4973
Помеченные как спам: 223
Комментов в корзине: 4
Всего комментариев: 4975
0

#2 Получим статистику комментариев для конкретного поста:

$comments_count = wp_count_comments( 140 );

echo "Комментарии поста: <br>";
echo "На модерации: " . $comments_count->moderated . "<br>"; 
echo "Утвержденные: " . $comments_count->approved . "<br>";
echo "Помеченные как спам: " . $comments_count->spam . "<br>";
echo "Комментов в корзине: " . $comments_count->trash . "<br>";
echo "Всего комментариев: " . $comments_count->total_comments . "<br>";

Получим:

Комментарии поста:
На модерации: 0
Утвержденные: 49
Помеченные как спам: 0
Комментов в корзине: 0
Всего комментариев: 49

Заметки

Список изменений

С версии 2.5.0 Введена.

Код wp_count_comments() WP 6.5.2

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;
}