Настройка в разделе «Обсуждение» управляет комментариями только у новых записей. Если нужно закрыть уже опубликованные страницы и записи, одного переключателя недостаточно: существующие комментарии могут остаться открытыми, а опубликованные — продолжить отображаться. Ниже — варианты для всего сайта, отдельных материалов и типов контента.
Отключение комментариев у новых записей
Откройте в админке Настройки → Обсуждение и снимите флажок «Разрешить оставлять комментарии к новым записям». Сохраните изменения. Это настройка по умолчанию: она действует на записи, созданные после её включения, но не меняет статус обсуждения у старых материалов.
Если сайт публикует записи не только через обычный редактор, проверьте настройки самого типа контента. Плагин или тема могут отдельно управлять поддержкой комментариев у пользовательского типа записей.
Как закрыть комментарии у уже опубликованных материалов
Для стандартных записей откройте Записи → Все записи, отметьте нужные материалы, в меню «Действия» выберите «Изменить» и нажмите «Применить». В массовом редактировании установите для комментариев значение «Не разрешать», затем сохраните изменения. Аналогично можно обработать страницы через Страницы → Все страницы.
Если записей больше, чем помещается на одной странице списка, повторите действие для каждой страницы. Число отображаемых строк можно изменить в настройках экрана списка, если эта опция доступна в вашей версии админки. Сначала полезно проверить результат на нескольких материалах: массовое редактирование меняет статус сразу у всех отмеченных записей.
Чтобы закрыть комментарии только у одной записи, откройте её в редакторе и найдите панель «Обсуждение». В блочном редакторе панели можно включить через меню с тремя точками → «Настройки» → «Панели». В классическом редакторе проверьте вкладку «Настройки экрана». Снимите флажок разрешения комментариев и обновите запись. Если панели нет, у типа контента может быть отключена поддержка комментариев или интерфейс изменён плагином.
Отключение для сайта целиком, включая пользовательские типы записей
Если нужно не только закрыть комментарии у текущих материалов, но и убрать управление ими из редакторов, используйте код в небольшом собственном плагине или через плагин для сниппетов. Не вставляйте его в файлы родительской темы: обновление темы может удалить изменения. Перед добавлением сделайте резервную копию файлов и базы данных.
Пример ниже отключает поддержку комментариев и trackback в зарегистрированных типах записей, а также закрывает комментарии и trackback через фильтры WordPress. Фильтры важны: удаление поддержки само по себе не меняет статус обсуждения у уже созданных записей.
<?php
add_action( 'init', function () {
foreach ( get_post_types( array(), 'names' ) as $post_type ) {
remove_post_type_support( $post_type, 'comments' );
remove_post_type_support( $post_type, 'trackbacks' );
}
}, 100 );
add_filter( 'comments_open', '__return_false', 20, 2 );
add_filter( 'pings_open', '__return_false', 20, 2 );
Установите код как отдельный сниппет, активируйте его и проверьте сайт и админку. Приоритет 100 позволяет обработать типы записей, зарегистрированные стандартным образом на более раннем этапе init. Если плагин регистрирует свой тип позже, укажите более высокий приоритет или отключите поддержку именно у этого типа после его регистрации. Фильтры закрывают обсуждение на уровне WordPress независимо от типа записи.
Этот способ не удаляет ранее опубликованные комментарии и не гарантирует, что тема перестанет показывать их список. Некоторые шаблоны выводят старые комментарии даже у закрытой записи. Чтобы убрать их с сайта, удалите комментарии в разделе Комментарии; удаление необратимо без резервной копии. Если достаточно лишь запретить новые сообщения, удалять старые не нужно.
Как отключить комментарии только у определённого типа контента
Для разовой выборки достаточно массового редактирования записей и страниц. Для постоянного правила — например, запретить комментарии у всех материалов пользовательского типа «Новости» — удобнее изменить регистрацию этого типа. В настройке supports указывают поддерживаемые возможности. Если тип записей уже создаёт плагин, найдите его настройку комментариев или обратитесь к документации плагина: правка регистрации через второй сниппет может конфликтовать с обновлениями.
Когда вы контролируете регистрацию пользовательского типа, не добавляйте в supports значение comments. Если тип уже зарегистрирован и нужно только убрать поддержку в админке, используйте после его регистрации вызов remove_post_type_support( 'имя-типа', 'comments' ). Это меняет интерфейс и поддержку типа, но не закрывает автоматически обсуждение у старых записей. Для них отдельно установите статус «Не разрешать» массовым редактированием или примените фильтр comments_open только к нужному типу.
Как проверить, что настройка сработала
Откройте несколько материалов в разных типах контента: у закрытой записи форма отправки комментария не должна быть доступна, а в редакторе не должно быть управления комментариями, если вы отключали поддержку типа. Проверьте также материал, который был опубликован до изменения настройки: именно на нём проще заметить разницу между настройкой для новых записей и закрытием существующих.
Если форма всё ещё видна, очистите кэш сайта и браузера, затем проверьте шаблон страницы. Тема может выводить собственную форму или блок комментариев; в таком случае отключение обсуждения в WordPress не обязательно удаляет всю разметку шаблона. Не удаляйте вызовы шаблонов наугад: сначала убедитесь, что они отвечают именно за комментарии, а не за другие элементы страницы.
Отключение комментариев не равно удалению комментариев. Закрытие запрещает новые сообщения, а уже сохранённые записи остаются в админке и могут отображаться темой. Выберите массовое редактирование для точечной обработки, настройки типа контента — для постоянного частичного запрета, а глобальные фильтры — когда нужно закрыть обсуждение на всём сайте.