comments_popup_link() в WordPress: использование, параметры, примеры

Функция 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_link
  • comments_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.

Leave a Reply

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