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 );
}