Функция COMMENTS_OPEN() в WordPress: как использовать и для чего она нужна

Функция COMMENTS_OPEN() в WordPress

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

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

Давайте разберёмся, как работать с этой функцией.

Как это работает

Функция возвращает true, если комментарии открыты, и false, если они закрыты. Например, если вы хотите узнать, можно ли оставить комментарий к определённому посту, вы можете вызвать эту функцию следующим образом:

comments_open( $post );

Где $post — это ID поста или объект WP_Post. По умолчанию используется текущий пост.

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

Вот несколько примеров, как можно использовать comments_open().

1. Проверка возможности оставить комментарий на посте

В данном примере мы проверяем, открыты ли комментарии на посте, и если да, то отображаем шаблон комментариев:

if ( comments_open( $post->ID ) ) {
    comments_template();
}

2. Закрытие комментариев на всех статических страницах

Этот пример демонстрирует, как закрыть комментарии на всех страницах (page пост тип):

add_filter( 'comments_open', 'my_comments_open', 10, 2 );

function my_comments_open( $open, $post_id ) {
    $post = get_post( $post_id );

    if ( 'page' == $post->post_type )
        $open = false;

    return $open;
}

3. Проверка статуса комментариев

Вы можете использовать global $post, чтобы проверить статус комментариев для текущего поста:

global $post;

if ( 'open' === $post->comment_status ) {
    comments_template();
}

4. Добавление скрипта только если комментарии открыты

Вот как вы можете подключить скрипт только для одиночного поста с открытыми комментариями:

add_action( 'wp_print_scripts', 'wpdocs_scripts' );

/**
 * Подключаем wpdocs_script, если доступен пост с включёнными комментариями.
 */
function wpdocs_scripts() {
    if ( is_single() && comments_open() ) {
        // wpdocs_script должен быть зарегистрирован ранее с помощью wp_register_script()
        wp_enqueue_script( 'wpdocs_script' );
    }
}

Структура функции

Вот как выглядит код функции comments_open() в WordPress:


function comments_open( $post = null ) {
$_post = get_post( $post );

$post_id       = $_post ? $_post->ID : 0;
$comments_open = ( $_post && ( 'open' === $_post->comment_status ) );

/**
 * Фильтрует, открыты ли комментарии для текущего поста.
 *
 * @since 2.5.0
 *
 * @param bool $comments_open Открыты ли комментарии для текущего поста.
 * @param int  $post_id       ID поста.
 */
return apply_filters( 'comments_open', $comments_open, $post_id );

}

Чаще используемые функции

Функция comments_open() тесно связана с другими условными тегами WordPress. Вот некоторые из них, которые могут быть полезны:

  • is_single(): Проверяет, является ли запрашиваемый пост одиночным.
  • is_page(): Проверяет, является ли запрашиваемый пост страницей.
  • have_comments(): Определяет, есть ли комментарии к посту.
  • comments_template(): Отображает шаблон комментариев.

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

Заключение

Функция comments_open() — полезный инструмент для управления комментариями в WordPress. Она позволяет вам проверять, открыты ли комментарии к конкретному посту, а также принимать решения о выводе шаблонов комментариев. Используйте её, чтобы сделать ваш сайт более интерактивным и удобным для пользователей!

Leave a Reply

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