Как удалить раздел комментариев только со страниц, а не со страниц записей?
Как удалить раздел комментариев только со страниц, а не со страниц записей?

Если вы хотите отображать комментарии и форму комментариев для записей, но не для страниц, необходимо разделить логику в вашем файле шаблона, чтобы вызывать comments_template()
в зависимости от типа отображаемого элемента (запись или страница). Есть два способа сделать это: либо использовать один файл шаблона для обоих типов с условными тегами:
if (!is_page()) {
comments_template();
}
Другой вариант — использовать отдельные файлы шаблонов: single.php
для записей и page.php
для страниц (подробнее см. в иерархии шаблонов). Просто не вызывайте comments_template()
в шаблоне страницы. Если между макетом записи и страницы нет других различий, то комбинированный файл шаблона с условными тегами, вероятно, будет лучше для поддержки.
Если вы хотите реализовать это "на расстоянии", то есть когда файл шаблона уже содержит вызов comments_template()
, можно создать плагин, который подключится к фильтру comments_template
и перенаправит его на пустой файл в директории (это может быть даже сам файл плагина — поскольку он содержит только PHP-код, он ничего не отобразит — но это может сбить с толку других разработчиков).
add_filter('comments_template', 'no_comments_on_page');
function no_comments_on_page( $file )
{
if ( is_page() ) {
$file = dirname( __FILE__ ) . '/empty-file.php';
}
return $file;
}

Привет, Ян! Спасибо за ответ. Есть ли какой-нибудь плагин, чтобы сделать это без редактирования кода?

@metal-gear-solid: Я обновил свой ответ, добавив пример реализации через плагин. Не знаю, существует ли готовый плагин для этого, но решение очень простое, так что вы можете поместить его в файл плагина самостоятельно.

Вручную я могу убрать раздел комментариев на каждой странице, снимая эти галочки http://farm2.static.flickr.com/1280/5179502796_b9e09c10ba.jpg. И я только что нашел этот плагин, который оставляет эти галочки снятыми для всех страниц, но не для записей http://wordpress.org/extend/plugins/page-comments-off-please/

Мне очень нравится этот фрагмент из темы Hybrid в начале шаблона comments.php
, который гибко отключает комментарии, если они не поддерживаются или отключены для конкретной записи/страницы:
if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) )
return;
