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

15 нояб. 2010 г., 16:51:53
Просмотры: 6.98K
Голосов: 6

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

0
Все ответы на вопрос 3
3

Если вы хотите отображать комментарии и форму комментариев для записей, но не для страниц, необходимо разделить логику в вашем файле шаблона, чтобы вызывать 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;
}
15 нояб. 2010 г. 17:12:25
Комментарии

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

Jitendra Vyas Jitendra Vyas
15 нояб. 2010 г. 17:33:05

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

Jan Fabry Jan Fabry
15 нояб. 2010 г. 18:08:06

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

Jitendra Vyas Jitendra Vyas
15 нояб. 2010 г. 18:59:10
0

Мне очень нравится этот фрагмент из темы Hybrid в начале шаблона comments.php, который гибко отключает комментарии, если они не поддерживаются или отключены для конкретной записи/страницы:

if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) )
    return;
15 нояб. 2010 г. 17:38:33
0

в зависимости от темы.

проверьте код pages.php и удалите всё, связанное с комментариями

будьте осторожны, чтобы не сломать дизайн.

Если вы можете опубликовать код pages.php здесь, надеюсь, мы сможем подсказать необходимые изменения

15 нояб. 2010 г. 21:52:22