Получение текста количества комментариев с помощью 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.