Условный тег: comments_open
Проверяет открыто ли комментирование для текущей страницы или записи. Этот условный тег является boolean-функцией, то есть он возвращает только true или false.
<?php if ( comments_open($post_id) ) { ... } ?> |
<?php if ( comments_open($post_id) ) { ... } ?>
$post_id
(число) (необязательный) - указывает ID конкретной страницы или записи.
По умолчанию значения нет.
boolean
Возвращает true если комментирование открыто и false если нет.
1. Использование в comments.php
Данный код, вставленный в файл шаблона comments.php проверит возможность комментирования текущей страницы или записи и в зависимости от этого выведет различные текстовые сообщения.
<?php if ( comments_open() ) : ?> <p>Оставьте комментарий к записи, заполнив форму ниже.</p> <?php else : ?> <p>Комментирование записи закрыто.</p> <?php endif; ?> |
<?php if ( comments_open() ) : ?> <p>Оставьте комментарий к записи, заполнив форму ниже.</p> <?php else : ?> <p>Комментирование записи закрыто.</p> <?php endif; ?>
2. Использование в single.php или page.php
Данный код, вставленный в файлы шаблона single.php или page.php проверит возможность комментирования текущей записи или страницы и в зависимости от этого подключит или нет файл шаблона comments.php (если комментирование запрещено, то комментарии к записи или странице не будут выведены вообще, даже если они существуют).
<?php if ( comments_open() ) comments_template(); ?> |
<?php if ( comments_open() ) comments_template(); ?>
3. Использование параметра $post_id
Данный пример проверяет открытость комментариев записи или страницы с ID равным 40.
if ( comments_open('40') ) { echo 'Комментирование записи "' . get_the_title('40') . '" разрешено.'; } else { echo 'Комментирование записи "' . get_the_title('40') . '" закрыто.'; } ?> |
if ( comments_open('40') ) { echo 'Комментирование записи "' . get_the_title('40') . '" разрешено.'; } else { echo 'Комментирование записи "' . get_the_title('40') . '" закрыто.'; } ?>
4. Хук на использование comments_open()
Этот код, вставленный в файл шаблона functions.php при использовании функции comments_open() закроет комментарии ко всем страницам в блоге (comments_open() будет возвращать false). Важно помнить, что если в шаблоне форма добавления комментариев вставляется без проверки comments_open(), то комментирование страниц все равно будет открыто.
function my_comments_open($open, $post_id) { $post = get_post($post_id); if ('page' == $post->post_type) $open = false; return $open; } 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; } add_filter('comments_open', 'my_comments_open', 10, 2);
Функция добавлена в версии 1.5.0
Функция comments_open() находится в wp-includes/comment-template.php
Условные теги: comments_open, current_user_can, is_404, is_admin, is_archive, is_attachment, is_author, is_category, is_comments_popup, is_date, is_day, is_feed, is_front_page, is_home, is_local_attachment, is_multi_author, is_month, is_new_day, is_page, is_page_template, is_paged, is_plugin_active, is_plugin_active_for_network, is_plugin_inactive, is_plugin_page, is_post_type_archive, is_preview, is_search, is_single, is_singular, is_ssl, is_sticky, is_tag, is_tax, is_year, in_category, in_the_loop, is_active_sidebar, is_blog_installed, is_rtl, is_dynamic_sidebar, is_user_logged_in, has_excerpt, has_post_thumbnail, has_tag, pings_open, email_exists, post_password_required, post_type_exists, taxonomy_exists, user_can, username_exists, wp_attachment_is_image
Понравился пост? Подпишись на обновления по RSS или Twitter !
#1,
Подскажите, как вообще удалить вывод комментариев на сайте? Знаю, что в блоге можно отключить комментирование вообще, но тогда выводиться надпись "Комментарии запрещены".
#2,
а в чем проблема удалить в single.php вызов функции comments_template? вместе с функцией comments_open, если она используется в шаблоне.