comments_open()
Перевіряє, чи відкрито коментування для зазначеного поста/запису.
Результат, що повертається цією функцією, можна змінити через фільтр comments_open .
Працює на основі:
get_post()
get_post()
1 раз – 0.002038 сек
(дуже повільно) | 50000 разів – 0.81 сек
(дуже швидко) |
PHP 7.1.5, WP 4.8.1
(дуже повільно) | 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.0.2
function comments_open( $post_id = null ) { $_post = get_post($post_id); $post_id = $_post? $_post->ID: 0; $open = ( $_post && ( 'open' === $_post->comment_status ) ); /** * Filters whether the current post is open for comments. * * @ Since 2.5.0 * * @param bool $open Whether the current post is open for comments. * @param int $post_id The post ID. */ return apply_filters( 'comments_open', $open, $post_id ); }