comments_open()
Проверяет открыто ли комментирование для указанного поста/записи.
Результат возвращаемый этой функцией можно изменить через фильтр comments_open.
Работает на основе: get_post()
1 раз — 0.002038 сек (очень медленно) | 50000 раз — 0.81 сек (очень быстро) | PHP 7.1.5, WP 4.8.1
Хуки из функции
Возвращает
true|false
. true, если можно оставлять комментарии к посту и false, если нельзя.
Использование
comments_open( $post_id );
- $post_id(число|WP_Post)
- ID поста, для которого нужно проверить разрешение оставлять комментарии. Если не указать, то результат вернётся для текущего поста.
По умолчанию: null
Примеры
#1 Проверим возможность оставлять комментарии к посту
и если оставлять комментарии разрешено, то выведем шаблон комментариев.
if( comments_open($post->ID) ) comments_template();
#2 Использование фильтра comments_open
Этот пример показывает как закрыть комментарии ко всем постоянным страницам (записям типа 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; }
Если шаблон комментариев выводится через проверку, как в первом примере, то для всех постоянных страниц comments_open($post->ID)
будет возвращать false, соответственно шаблон комментариев (comments_template()
) выводится не будет.
#3 Еще одна проверка возможности оставить коммент
Альтернативно проверить возможность оставлять комментарии к текущему посту можно так:
global $post; if( 'open' == $post->comment_status ) comments_template();
Список изменений
С версии 1.5.0 | Введена. |
Код comments_open() comments open WP 6.7.2
function comments_open( $post = null ) { $_post = get_post( $post ); $post_id = $_post ? $_post->ID : 0; $comments_open = ( $_post && ( 'open' === $_post->comment_status ) ); /** * Filters whether the current post is open for comments. * * @since 2.5.0 * * @param bool $comments_open Whether the current post is open for comments. * @param int $post_id The post ID. */ return apply_filters( 'comments_open', $comments_open, $post_id ); }