Используем функцию `get_comments_number_text()` для вывода текста количества комментариев

Получение текста количества комментариев с помощью get_comments_number_text()

Функция get_comments_number_text() отображает текст для количества комментариев к текущей записи. Она помогает вам вывести нужное сообщение в зависимости от того, сколько комментариев оставили пользователи.

Как работает функция

Функция использует две другие функции:

  • get_comments_number(): возвращает количество комментариев.
  • number_format_i18n(): форматирует число в соответствии с локализацией.

Хуки функции

Функция comments_number позволяет изменять вывод текста комментариев.

Возвращаемое значение

Функция возвращает строку — текст, который отображает количество комментариев у поста.

Использование функции

Синтаксис

get_comments_number_text( $zero, $one, $more, $post );
  • $zero (string) — текст для случая, если комментариев нет. По умолчанию: false.
  • $one (string) — текст для одного комментария. По умолчанию: false.
  • $more (string) — текст для более одного комментария. По умолчанию: false.
  • $post (int|WP_Post) — ID поста или объект WP_Post. По умолчанию: глобальный $post.

Пример использования

Представьте, что вы хотите отобразить количество комментариев на текущем посте, и хотите указать текст в зависимости от их количества.

Этот пост имеет .

История изменений

  • С версии 4.0.0 — функция была представлена.
  • С версии 5.4.0 — добавлен параметр $post для использования функции вне цикла.

Код функции

Вот код функции get_comments_number_text() из файла wp-includes/comment-template.php:

function get_comments_number_text( $zero = false, $one = false, $more = false, $post = 0 ) {
$comments_number = get_comments_number( $post );

if ( $comments_number > 1 ) {
    if ( false === $more ) {
        $comments_number_text = sprintf(
            /* translators: %s: Number of comments. */
            _n( '%s Comment', '%s Comments', $comments_number ),
            number_format_i18n( $comments_number )
        );
    } else {
        if ( 'on' === _x( 'off', 'Comment number declension: on or off' ) ) {
            $text = preg_replace( '#.+?#', '', $more );
            $text = preg_replace( '/&.+?;/', '', $text ); // Удаляем HTML-сущности.
            $text = trim( strip_tags( $text ), '% ' );

            // Заменяем '% Комментариев' на правильную форму в родительном падеже.
            if ( $text && ! preg_match( '/[0-9]+/', $text ) && str_contains( $more, '%' ) ) {
                $new_text = _n( '%s Comment', '%s Comments', $comments_number );
                $new_text = trim( sprintf( $new_text, '' ) );

                $more = str_replace( $text, $new_text, $more );
                if ( ! str_contains( $more, '%' ) ) {
                    $more = '% ' . $more;
                }
            }
        }

        $comments_number_text = str_replace( '%', number_format_i18n( $comments_number ), $more );
    }
} elseif ( 0 == $comments_number ) {
    $comments_number_text = ( false === $zero ) ? __( 'Нет комментариев' ) : $zero;
} else { // Должен быть один комментарий.
    $comments_number_text = ( false === $one ) ? __( '1 комментарий' ) : $one;
}

return apply_filters( 'comments_number', $comments_number_text, $comments_number );

}

Похожие функции

Если вам нужн�� дополнительные функции для работы с комментариями, вот несколько полезных:

  • add_comment_meta() — добавляет метаданные к комментарию.
  • clean_comment_cache() — очищает кэш комментариев.
  • comment_link() — возвращает ссылку на комментарий.
  • comments_template() — подключает шаблон для комментариев.
  • get_comment_author() — получает имя автора комментария.

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

Leave a Reply

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