Функция wp_count_comments() в WordPress 2.5.0: описание, параметры, примеры

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(): удаление комментария.

Эти функции помогут вам управлять комментариями на вашем сайте.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *