Как полностью запретить комментирование в своем блоге WordPress

Возможность комментирования в WordPress наводит меня на мысли о Распутине, мистической фигуре 19 века.

Говорят, что когда враги пожелали смерти Распутина, они решили нанести ему удар ножом, но он смог выжить. Затем они решили его отравить с помощью больших объемов цианида – он выжил и в этом случае. Выстрел в спину из револьвера на время остановил его, но затем он внезапно очнулся и бросился в сторону нападавших. Они снова выстрелили в него, а затем избили, но он все равно остался в живых. Умер Распутин лишь после того, как его сбросили с моста в полынью.

Rasputin_800x400

Комментирование в WordPress уничтожить так же тяжело, однако я покажу вам путь к решению этой проблемы в данной статье.

Начнем со страницы Параметры – Обсуждение

Первое, что нужно сделать – перейти на страницу Параметры — Обсуждение в панели администратора.

settings-discussion-

На этой странице содержится масса полезных настроек. Однако здесь нет никаких опций для того, чтобы полностью убрать комментарии (а также расправиться с их ближайшими родственниками: уведомлениями и обратными ссылками), причем убрать даже для тех записей, которые уже обладают некоторыми комментариями, оставленными в прошлом. Прекрасно, если бы такая опция была; возможно, что она появится в будущих версиях WordPress.

Скорая помощь блогу

Опция «An administrator must always approve the comment» (Администратор должен проверить комментарий) воспрепятствует публикации комментариев во фронт-энде, пока кто-либо с соответствующей пользовательской ролью не проверит их и не утвердит. Однако, естественно, комментарии все равно будут появляться в консоли, вставая в очередь на модерирование, где с ними уже придется поработать, поэтому такой подход выступит лишь временной мерой, предотвращающей публичный просмотр комментариев — своеобразная «скорая помощь» блогу.

admin-must-approve-

Шаг 1. Защита всех будущих записей

Две самых важных опции на странице Параметры — Обсуждение, отвечающие нашим целям, применяются лишь к записям, которые будут опубликованы в будущем. Вот эти две опции: «Allow link notifications from other blogs (pingbacks and trackbacks)» (Разрешить оповещения с других блогов (уведомления и обратные ссылки)) и «Allow people to post comments on new articles» (Разрешить оставлять комментарии на новые статьи). Снятие флажков с этих пунктов защитит все ваши будущие записи от комментариев, обратных ссылок и уведомлений.

uncheck-both-options1-

Собственно, для решения нашей проблемы мы должны снять флажки с этих пунктов. Это поможет защитить наши будущие записи. Однако это не остановит поток комментариев, обратных ссылок и уведомлений к уже существующим, опубликованным записям.

Обратите внимание, что термин «запись» включает в себя не только «страницы» WordPress, которые являются отдельным типом записей, но и произвольные типы записей.

Совет по раннему предотвращению всего этого беспорядка

Как только у вас будет новый сайт WordPress, перед тем, как создавать на нем какие-либо записи, убедитесь в том, что эти две опции, которые обсуждались выше, отключены – это позволит вам избежать хаоса еще на начальном этапе. Это самое лучшее решение проблемы. Однако в нашем случае мы имеем дело с уже запущенным сайтом, записи которого были открыты для комментирования.

Обратные ссылки и уведомления

Несмотря на то что обратные ссылки и уведомления не являются комментариями в полном смысле этого слова, они состоят в некотором родстве, поскольку и обратные ссылки, и уведомления могут выводиться для публичного просмотра и располагаться в тех же самых местах веб-сайта и консоли, что и комментарии. Термин «комментарии» часто охватывает всю вышеназванную троицу. И чтобы отключить всю эту троицу для своего блога, нужно проделать следующие шаги.

В консоли на странице Комментарии расположен список всех комментариев, который можно сортировать в соответствии с выбранным типом. Для этого достаточно обратиться к полю «Show all comment types». Примечание: под фразой «Pings» подразумеваются и обратные ссылки, и уведомления.

sort-comments-448x200

Шаг 2. Закрываем комментарии ко всем отдельным записям

Следующий наш шаг – закрытие комментариев ко всем существующим отдельным записям.

На странице Edit Post (Редактировать запись) для каждой записи есть поле с меткой Discussion (Обсуждение).

discussion-settings-box-583x95

Если у вас нет этого поля, перейдите к Screen Options (Настройки экрана) в самом верху страницы, щелкните по стрелочке и включите пункт Discussion.

screen-options-312x136

В поле Discussion вы можете убрать флажки с пунктов «Allow comments» и «Allow trackbacks and pingbacks» для выбранной вами записи. Сохраните результат. Если у вас несколько записей, то этот шаг не займет много времени.

Однако как быть, если у вас есть десятки, сотни или даже тысячи записей, для которых нужно изменить эту опцию? К счастью, в WordPress есть функция Bulk Actions, которая позволяет облегчить данную задачу.

Пункт Bulk Actions можно найти на экране Posts (Записи), где выводится список всех записей. Выполните следующие шаги, чтобы применить изменения для комментариев, обратных ссылок и уведомлений ко всем записям:

  • Выберите все записи, поставив галочку напротив соответствующего пункта в левом верхнем углу экрана (или выберите отдельные записи, которые вам нужно отредактировать).
  • Щелкните по стрелочке рядом с пунктом Bulk Actions и выберите Edit.
  • bulk-actions-312x216

  • Щелкните Apply. Появится секция Bulk Edit с ограниченным набором доступных параметров настройки.
  • bulk-edit-screen-700x162

  • Щелкните по стрелочке рядом с «Comments» и выберите «Do not allow».
  • Щелкните по стрелочке рядом с «Pings» и выберите «Do not allow».
  • Щелкните Update для сохранения изменений.

show-number-of-posts-448x121

По умолчанию на экране Posts выводится 20 записей. Если у вас очень много записей, вы можете изменить эту опцию, увеличив число выводимых записей. Переходим в раздел Screen Options, меняем число 20 на любое другое, после чего щелкаем Apply. В моих тестах WordPress не смог массово отредактировать 200 записей, но зато смог это сделать для 150 записей. Точное число может зависеть от вашей серверной среды или Интернет-соединения.

После того как вы измените параметры Discussion для всех отдельных записей, вам понадобится сделать то же самое для всех отдельных страниц, если у вас разрешены комментарии для них. Делается это по аналогии с записями. Однако в данном случае есть одно значительное отличие – при массовом редактировании обратные ссылки и уведомления для страниц никак не отключить. Эти настройки нужно изменять для каждой страницы отдельно, иначе вы будете раз за разом получать обратные ссылки и уведомления для уже существующих страниц.

Шаг 3. Комментарии для страниц вложений

Rasputin_lunging_at_you-448x595

Таким образом, мы выполнили первый и второй шаг. Распутин по идее должен быть мертв, верно? Но к нашему всеобщему изумлению, он поднимается и нападает на нас. На сайт по-прежнему приходят комментарии!

Причина проста: обратные ссылки, уведомления и комментарии могут приходить к страницам вложений.

Каждый раз, когда медиа-файл добавляется к записи, создается страница вложения. В зависимости от темы, посетители сайта и спамеры могут найти возможность публикации комментария, обратной ссылки или уведомления для страницы вложения.

Страницы вложений имеют свою страницу Edit Media, которая подобна странице Edit Post. Чтобы просмотреть страницы вложений, перейдите в раздел Media – Library, где содержится список всех медиа-пунктов, которые были загружены через WP медиа-загрузчик. В самом верху списка щелкните «All» для отображения всех медиа-пунктов, вне зависимости от того, изображения это или другие типы медиа-данных.

media-library

Обратите внимание на столбец «Uploaded to», который указывает на то, к какой записи или странице были прикреплены или загружены медиа-пункты. Некоторые изображения могут оставаться неприкрепленными, «unattached». Я делаю на этом акцент, поскольку все изображения имеют свою страницу вложения, вне зависимости от того, прикреплены ли они к записи или нет.

media-library-list-583x192

Страница «Edit Media» для каждого отдельного медиа-пункта доступна по нажатию ссылки Edit  под заголовком пункта. На странице «Edit Media» щелчок по «View Attachment Page» открывает страницу вложения во фронт-энде, где вполне может находиться форма комментариев.

edit-media-screen2-583x117

Однако давайте задержимся на странице Edit Media. По аналогии со страницей Edit Post, уже обсуждаемой нами выше, Edit Media отображает поле Discussion, позволяющее устанавливать или отменять опции «Allow comments» и «Allow trackbacks and pingbacks» для выбранного пункта. Чтобы отключить их, достаточно снять флажки с этих опций. К сожалению, для страниц вложений отсутствует пункт Bulk Actions, поэтому нужно будет отключать опции вручную для каждой страницы.

Если у вас много страниц с вложениями, вручную отключать комментирование для них не слишком удобно.

Выбраться из этой ситуации просто, причем можно обойтись даже без плагинов. Вам понадобится отредактировать небольшой код в файле темы. Открываем functions.php в редакторе и вносим в самый его конец следующий код:

function filter_media_comment_status( $open, $post_id ) {
$post = get_post( $post_id );
if( $post->post_type == 'attachment' ) {
return false;
}
return $open;
}
add_filter( 'comments_open', 'filter_media_comment_status', 10 , 2 );

Учтите, что если вы используете стороннюю тему без введения дочерних тем, то в будущем после установки новой версии темы это изменение будет перезаписано.

Использование плагина

В этой статье мы показали, как можно полностью отключить комментирование на сайте, даже если на сайте имеются записи с уже существующими комментариями, причем все это было нами сделано через Консоль. Еще одно решение проблемы предлагает плагин, который может оказаться хорошим выбором. Если вы пойдете этим маршрутом, знайте, что плагин может конфликтовать с кодом вашей темы или с другими плагинами — либо сейчас, либо в будущем. Также учтите, что плагин может перестать работать с выходом новых версий WordPress.

plugin-disable-comments-700x192

Плагин Disable Comments позволяет администраторам сайта глобально отключать все комментарии, включая обратные ссылки и уведомления. Комментарии могут быть отключены только для определенного типа записей – записей, страниц или страниц вложений. Эффект плагина может быть легко снят – для этого достаточно отключить выбранные опции.

disable-comments-settings-448x230

Также плагин автоматически делает следующее:

  • Удаляет все связанные с комментариями поля со страниц редактирования и быстрого редактирования.
  • Удаляет все связанные с комментариями пункты из консоли, виджетов, меню администратора и админ-бара.

Плагин Disable Comments включает в себя опцию Persistent Mode, которая, в отличие от стандартного использования плагина, вносит изменения в базу данных, которые довольно сложно отменить. Режим Persistent Mode был добавлен для определенных ситуаций, когда код темы не позволял корректно определять статус комментирования для записей. Persistent Mode не следует использовать, если этот режим не требуется, поскольку внесение обратных изменений потребует ручного редактирования базы данных WP.

Плагин прекрасно работает в WP 3.5.1. На момент написания статьи совместимость плагина с версией WP 3.5.1 была подтверждена многими пользователями; плагин был недавно обновлен, он обладает хорошими рейтингами, а все проблемы находят быстрое и оперативное решение на форуме.

Хотелось бы надеяться, что будущие версии WordPress упростят задачу полного отключения комментирования для уже существующих сайтов. А пока будем пользоваться тем, что имеем.

Источник: wpmu.org

Блог про WordPress
Комментарии: 9
  1. Волшебник

    Да, так странно, что вроде бы такая простая опция полного запрета комментариев отсутствует в WP.

  2. Дмитрий (автор)

    Вот тут еще некоторые советы по данному вопросу (в том числе совет в комментариях):

    https://oddstyle.ru/wordpress-2/stati-wordpress/udalenie-kommentariev-iz-wordpress.html

  3. Otshelnik-fm

    Я делал так: «начало-пхп-кода return false; конец-пхп-кода» в файле comments.php, который лежит в корне темы (больше в этом файле нет ни одной строчки кода).

    Пока ни один камент не проскочил :)

    1. Дмитрий (автор)

      Здоровый минимализм :)

      Неплохой вариант для тех, кто хочет кардинально порвать с комментариями, спасибо за совет.

  4. Волшебник

    У меня противоположный вопрос. При создании блога, я запретил комментирование и теперь у всех статей комментарии закрыты. Можно ли как-то массово разрешить комментарии для всех статей?

    1. Дмитрий (автор)

      В панели администратора Параметры — Обсуждение и там поставить разрешить комментирование.

      В разделе с записями выбираем всех их, потом в списке Bulk Actions выбираем Edit, щелкаем Apply. Далее для Comments выбираем Allow. И то же самое потом делаем для страниц.

  5. Александра

    Меня завалил обвал спама. Не хватает времени убирать. Действительно плохо, что нельзя убрать все старые комментарии(спамы)

  6. Александр

    Большое человеческое спасибо за ваши труды!!!
    Долго не мог понять почему этот спам продолжает поступать при таких настройках.

  7. Kjersti

    У меня инфосайт. Тему писала сама под свои нужды (кстати, по урокам с вашего сайта — спасибо огромное за них!). Там полностью отсутствуют комментарии ибо сайт этого не предусматривает: нет никаких скриптов и областей для них, нет comments.php. Во второй версии темы код чище и осмысленней, но мне продолжают приходить уведомления о комментариях. Система как будто сама их создаёт, когда я делаю перелинковку. Создаю новую запист, в ней есть ссылки на предыдущие записи. К этим записям тот же час появляются какие-то «призраки комментариев», которые надо вручную отклонить и удалить через админку.

    Это меня не сильно достаёт, но хотелось бы понять, почему оно так делает при том, что комментирование в принципе не заложено в тему.

Добавить комментарий для Александра Отменить ответ

Получать новые комментарии по электронной почте.