Функция 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. Она позволяет вам проверять, открыты ли комментарии к конкретному посту, а также принимать решения о выводе шаблонов комментариев. Используйте её, чтобы сделать ваш сайт более интерактивным и удобным для пользователей!