WP_COUNT_COMMENTS() │ WP 2.5.0
Функция wp_count_comments() позволяет получить общее количество комментариев для блога или отдельной записи.
Комментарии кэшируются, и если они уже есть в кэше, то извлекаются оттуда.
Использует
Функция get_comment_count() отвечает за получение актуальных данных о комментариях.
Хуки функции
wp_count_comments: позволяет добавлять свои изменения к результату функции.
Что возвращает
Функция возвращает объект stdClass, содержащий количество комментариев по их статусам (одобренные, ожидающие и т.д.).
Применение
Для того чтобы использовать функцию, достаточно вызвать её с ID поста:
wp_count_comments( $post_id );
Параметры
- $post_id (int): ID поста, для которого нужно получить статистику комментариев. По умолчанию равен 0, что означает, что получаем данные для всего сайта.
Примеры использования
Пример 1: Получение количества комментариев для всего сайта
$comments_count = wp_count_comments();
$lines = [ 'Статистика комментариев сайта: ' ];
$lines[] = sprintf( 'В ожидании: %s', $comments_count->moderated );
$lines[] = sprintf( 'Одобренные: %s', $comments_count->approved );
$lines[] = sprintf( 'Помеченные как спам: %s', $comments_count->spam );
$lines[] = sprintf( 'Комментариев в корзине: %s', $comments_count->trash );
$lines[] = sprintf( 'Всего комментариев: %s', $comments_count->total_comments );
echo implode( '
', $lines );
Результат на экране:
Статистика комментариев сайта:
В ожидании: 0
Одобренные: 4973
Помеченные как спам: 223
Комментариев в корзине: 4
Всего комментариев: 4975
Пример 2: Получение статистики комментариев для конкретного поста
$comments_count = wp_count_comments( 140 );
$lines = [ 'Статистика комментариев для поста: ' ];
$lines[] = sprintf( 'В ожидании: %s', $comments_count->moderated );
$lines[] = sprintf( 'Одобренные: %s', $comments_count->approved );
$lines[] = sprintf( 'Помеченные как спам: %s', $comments_count->spam );
$lines[] = sprintf( 'Комментариев в корзине: %s', $comments_count->trash );
$lines[] = sprintf( 'Всего комментариев: %s', $comments_count->total_comments );
echo implode( '
', $lines );
Результат на экране:
Статистика комментариев для поста:
В ожидании: 0
Одобренные: 49
Помеченные как спам: 0
Комментариев в корзине: 0
Всего комментариев: 49
Примечания
- Для получения актуального количества комментариев следует использовать функцию
get_comment_count(), которая отвечает за извлечение данных о комментариях в реальном времени.
Журнал изменений
- С версии 2.5.0: функция была впервые введена в WordPress.
Исходный код функции
Ниже представлена реализация функции wp_count_comments() для лучшего понимания ее работы:
function wp_count_comments( $post_id = 0 ) {
$post_id = (int) $post_id;
// Фильтры для результата функции
$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;
}
Связанные функции
- count_users(): подсчет пользователей.
- wp_count_posts(): подсчет постов.
- wp_count_terms(): подсчет терминов.
Другие функции работы с комментариями:
get_comments(): получение комментариев.comments_popup_link(): создание ссылки на всплывающее окно для комментариев.wp_insert_comment(): добавление нового комментария.wp_delete_comment(): удаление комментария.
Эти функции помогут вам управлять комментариями на вашем сайте.