В WordPress часто возникает необходимость отключить комментарии и обсуждения не глобально, а только на отдельных страницах или записях. Это полезно, когда, например, на странице «О нас» или «Контакты» комментарии не нужны, но на блоге их хочется оставить активными. В этой статье разберём, как именно удалить обсуждения и комментарии на отдельных страницах WordPress с помощью настроек, плагинов и кода.
Почему важно отключать комментарии на отдельных страницах
Комментарии — отличный способ вовлечь пользователей, но иногда они неуместны или могут создавать лишнюю нагрузку. Например, на страницах с юридической информацией, лендингах, корпоративных сайтах или страницах с часто обновляемым контентом комментарии часто мешают. При этом полностью отключать их на сайте не всегда удобно.
Отключая комментарии выборочно, вы сохраняете интерактивность там, где она нужна, и избавляетесь от лишнего на других страницах. Это улучшает UX, снижает риск спама и упрощает модерацию.
Кроме того, отключение комментариев может улучшить скорость загрузки страницы, так как не подгружаются скрипты и стили для комментариев, а также снижает нагрузку на базу данных.
Стандартные способы отключения комментариев на отдельных страницах
В админке WordPress есть возможность отключить комментарии для конкретной записи или страницы:
- Откройте нужную страницу или запись в редакторе.
- В блоке «Обсуждение» снимите галочку «Разрешить комментарии».
- Обновите запись.
Но этот способ неудобен, если страниц много или вы хотите массово отключить комментарии на шаблонах страниц.
Поэтому рассмотрим более продвинутые способы — через код и плагины.
Отключение комментариев через functions.php — пример кода
Чтобы полностью отключить вывод комментариев и обсуждений на определённых страницах программно, можно добавить в файл functions.php вашей темы следующий код с префиксом wpdeveloper для функций:
function wpdeveloper_disable_comments_on_pages() {
if (is_page(array('kontakty', 'o-nas'))) { // замените на slug ваших страниц
// Отключаем поддержку комментариев
remove_post_type_support('page', 'comments');
remove_post_type_support('page', 'trackbacks');
// Убираем форму комментариев
add_filter('comments_open', '__return_false', 20, 2);
add_filter('pings_open', '__return_false', 20, 2);
}
}
add_action('wp', 'wpdeveloper_disable_comments_on_pages');
Этот код проверяет, если мы на страницах с указанными slug ('kontakty', 'o-nas'), то отключает поддержку комментариев и трекбеков, а также скрывает форму комментариев.
Вы можете добавить в массив slug любых страниц, где хотите отключить комментарии.
Удаление блока комментариев из шаблона
Если тема явно выводит комментарии через comments_template(), то можно условно убрать вызов в файле page.php или в других шаблонах:
if (!is_page(array('kontakty', 'o-nas'))) {
comments_template();
}
Так вы гарантируете, что блок с комментариями не появится на выбранных страницах.
Использование плагинов для отключения комментариев на отдельных страницах
Если вы не хотите лезть в код, можно воспользоваться плагинами. Вот несколько популярных решений:
- Disable Comments — плагин, который позволяет глобально или выборочно отключать комментарии. В настройках можно указать, где именно отключать.
- WP Developer Comment Control — условно бесплатный плагин с расширенными настройками отключения комментариев по типам записей и конкретным страницам.
- Clearfy Pro — мощный оптимизатор, который среди множества функций позволяет гибко управлять комментариями, включая отключение на определённых страницах.
Все эти плагины экономят время и дают удобный интерфейс для отключения обсуждений без правки кода.
Массовое отключение комментариев на страницах и записях через SQL-запрос
Если на сайте много страниц, и вы хотите быстро отключить комментарии на всех страницах, можно сделать это через базу данных. Но будьте внимательны и сделайте резервную копию!
Пример запроса для отключения комментариев на всех страницах:
UPDATE wp_posts SET comment_status = 'closed', ping_status = 'closed' WHERE post_type = 'page';
Этот запрос закроет комментарии и пинги для всех страниц. Если нужно выборочно, добавьте условие по post_name или ID.
Управление отображением комментариев через хуки и фильтры
Иногда темы или плагины сами выводят комментарии не через стандартный comments_template(). В этих случаях можно использовать фильтры для отключения:
function wpdeveloper_disable_comments_output($open, $post_id) {
$post = get_post($post_id);
if ($post && $post->post_type === 'page' && in_array($post->post_name, array('kontakty', 'o-nas'))) {
return false;
}
return $open;
}
add_filter('comments_open', 'wpdeveloper_disable_comments_output', 20, 2);
add_filter('pings_open', 'wpdeveloper_disable_comments_output', 20, 2);
Этот фильтр отменит открытие комментариев и пингов на выбранных страницах.
Как отключить комментарии в Гутенберге на отдельных страницах
В редакторе Гутенберг также можно отключать комментарии. Но чтобы сделать это массово, удобнее через код или плагины.
Для отключения метабокса обсуждения на страницах в админке используйте:
function wpdeveloper_remove_discussion_metabox() {
remove_meta_box('commentstatusdiv', 'page', 'normal');
}
add_action('admin_menu', 'wpdeveloper_remove_discussion_metabox');
Это уберёт панель обсуждения, предотвращая случайное включение комментариев.
Итоги и рекомендации
Отключение комментариев на отдельных страницах WordPress — частая задача, решаемая несколькими способами:
- Через стандартные настройки записи (для единичных страниц).
- Через код в
functions.phpс использованием хуков и проверок. - Через плагины, если нужно удобство и массовое управление.
- Через SQL-запросы при больших объёмах.
Для большинства сайтов оптимально комбинировать код и плагины, чтобы быстро и гибко управлять комментариями.
Если хотите более мощное решение, обратите внимание на Clearfy Pro — в нём есть удобные инструменты для управления комментариями и оптимизации сайта в целом.