comments_open() WP 1.5.0

Перевіряє, чи відкрито коментування для зазначеного поста/запису.

Результат, що повертається цією функцією, можна змінити через фільтр 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

Приклади

0

#1 Перевіримо можливість залишати коментарі до посту

і якщо залишати коментарі дозволено, то виведемо шаблон коментарів.

if( comments_open($post->ID) )
	comments_template();
0

#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()) не виводиться.

0

#3 Ще одна перевірка можливості залишити коментар

Альтернативно перевірити можливість залишати коментарі до поточної посади можна так:

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

список змін

З версії 1.5.0Введено.

Код 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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *