Функция COMMENTS_POPUP_LINK() в WordPress
Функция comments_popup_link() предназначена для отображения ссылки на комментарии к текущему посту.
Используемые функции
В этой функции используется несколько вспомогательных функций:
comments_number()get_comments_number()comments_link()get_permalink()
Производительность
- Время выполнения для одного вызова: 0.008033 сек (медленно)
- Для 50000 вызовов: 13.64 сек (медленно)
Тестирование проводилось на PHP 7.1.5 и WordPress 4.8.2.
Хуки функции
Функция использует следующие хуки:
respond_linkcomments_popup_link_attributes
Возврат значения
Функция не возвращает ничего (null).
Использование функции
comments_popup_link( $zero, $one, $more, $css_class, $none );
Параметры
$zero(false|string): Текст для отображения, когда нет комментариев. По умолчанию:false$one(false|string): Текст для отображения, когда есть только один комментарий. По умолчанию:false$more(false|string): Текст для отображения, когда есть больше одного комментария. По умолчанию:false$css_class(string): CSS класс для ссылки на комментарии. По умолчанию:''$none(false|string): Текст для отображения, когда комментарии отключены. По умолчанию:false
Примеры использования
Пример 1: Отображение ссылки на комментарии поста
В результате вы получите:
Нет комментариев
Если пост защищён паролем (функция post_password_required()), будет отображено сообщение: "Введите пароль, чтобы увидеть комментарии".
Пример 2: Скрытие ссылки на всплывающее окно комментариев, когда комментарии закрыты
Пример 3: Загрузка разных CSS-классов в зависимости от количества комментариев
$css_class = 'zero-comments';
$number = (int) get_comments_number(get_the_ID());
if (1 === $number) {
$css_class = 'one-comment';
} elseif (1 < $number) {
$css_class = 'multiple-comments';
}
comments_popup_link(
__('Оставить комментарий', 'wpdocs_textdomain'),
__('1 комментарий', 'wpdocs_textdomain'),
__('% комментариев', 'wpdocs_textdomain'),
$css_class,
__('Комментарии закрыты', 'wpdocs_textdomain')
);
Пример 4: Ответ с учётом локализации для количества комментариев
История изменений
- Функция была введена в версии 0.71.
Исходный код функции
function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) {
$post_id = get_the_ID();
$post_title = get_the_title();
$comments_number = get_comments_number( $post_id );
if ( false === $zero ) {
$zero = sprintf( __( 'Нет комментариев к %s' ), $post_title );
}
if ( false === $one ) {
$one = sprintf( __( '1 комментарий к %s' ), $post_title );
}
if ( false === $more ) {
$more = _n(
'%1$s комментарий к %2$s',
'%1$s комментария к %2$s',
$comments_number
);
$more = sprintf( $more, number_format_i18n( $comments_number ), $post_title );
}
if ( false === $none ) {
$none = sprintf( __( 'Комментарии отключены к %s' ), $post_title );
}
if ( 0 == $comments_number && ! comments_open() && ! pings_open() ) {
printf(
'%2$s',
! empty( $css_class ) ? ' class="' . esc_attr( $css_class ) . '"' : '',
$none
);
return;
}
if ( post_password_required() ) {
_e( 'Введите пароль, чтобы увидеть комментарии.' );
return;
}
if ( 0 == $comments_number ) {
$respond_link = get_permalink() . '#respond';
$comments_link = apply_filters( 'respond_link', $respond_link, $post_id );
} else {
$comments_link = get_comments_link();
}
$link_attributes = apply_filters( 'comments_popup_link_attributes', '' );
printf(
'%4$s',
esc_url( $comments_link ),
! empty( $css_class ) ? ' class="' . $css_class . '" ' : '',
$link_attributes,
get_comments_number_text( $zero, $one, $more )
);
}
Теперь вы можете легко использовать функцию comments_popup_link() для отображения комментариев на вашем сайте WordPress.