Довольно часто возникает потребность отключать стандартные комментарии WP в особенности для сайта компании или для разных клиентских проектов. Особенно полезным будет профилактика или защита от спама, которая очень сильно атакует сайт ботами через форму комментариев в вордпресе.
В статье будут примеры того, как отключить возможность комментирования как в целом на всем сайте для CMS WordPress, так и разные методы точечного отключения комментов во всех постах или только в некоторых записях, категориях записей или по ID.
Оглавление:
- Полное отключение всех комментариев в WordPress через админку сайта
- Полное отключение комментариев на сайте через код:
- Отключение комментариев для отдельных записей и страниц в Вордпрес через админку
- Отключение комментариев для отдельных записей и страниц по идентификатору id в коде
- Отключение комментариев wordperess для определенных типов записей
- Отключение комментариев для определенных таксономий WP
- Отключение комментариев для определенных категорий постов Вордпрес
- Удаляем код который выводит комментари в шаблоне записи singl.php
- Это стандартный метод вывода комментариев в WordPress
- Использование функции comment_form():
- Использование шорткода [comments]:
- Использование пользовательского цикла для комментариев
- Использование хуков и фильтров для вывода комментариев в WordPress
- Удаление всех комментариев с сайта и очистка базы данных WordPress
- SQL-запрос для очистки базы данных от комментариев WP
- Очистка базы данных от комментариев через файл functions.php
- Финалочка
Полное отключение всех комментариев в WordPress через админку сайта
Через админку вордпреса можно деактивировать возможность комментирования полностью. Для этого необходимо выполнить следующие действия:
- Перейдите в раздел «Настройки» → «Обсуждение».
- Снимите галочку с пункта «Разрешить оставлять комментарии к новым записям».
Теперь никто не сможет оставлять комментарии на сайте. Такой метод подойдет в том случае, если никто кроме вас не будет лазить по админке и клацать разные кнопки не понимая что он делает и зачем. Если же в панель администратора заходят и другие пользователи с полным доступом админа можно перестраховаться и полностью через код деактивировать комментрии на сайте, а также скрыть раздел настроек коментов и обсуждения в админке сайта.
Полное отключение комментариев на сайте через код:
Данный код полностью закроет возможность оставлять комментарии и что немаловажно скроет в меню администратора все настройки обсуждения и комментирования для сайта.
// Отключение комментариев на всем сайте
function disable_comments_site_wide() {
// Закрыть комментарии на всех страницах и записях
add_filter( 'comments_open', '__return_false', 20, 2 );
add_filter( 'pings_open', '__return_false', 20, 2 );
// Скрыть раздел обсуждения в админ-панели
add_action( 'admin_menu', function() {
remove_menu_page( 'edit-comments.php' );
});
}
add_action( 'init', 'disable_comments_site_wide' );
P.S. Рекомендую данный метод для спокойствия души и во избежание нежелательных нажатий от любопытных сотрудников 😀.
Отключение комментариев для отдельных записей и страниц в Вордпрес через админку
Отключить комментарии можно и выборочно, например, вы хотите чтобы часть ваших страниц имела комментарии, а для отдельных страниц коменты были деактивированы. Можно сделать это также легко и быстро через админку сайта выборно или же сразу для списка страниц. Вот так это делается:
- Перейдите в раздел «Записи» или «Страницы» в вашей админ-панели.
- Выберите запись или страницу, для которой вы хотите отключить комментарии.
- В области «Обсуждение» снимите галочку с пункта «Разрешить комментарии».
Если вам нужно вывбрать сразу несколько страниц чтобы отключить для них комментирование, вы можете сделать следующее:
- Отметьте галочками необходимые посты, выберите ->действия -> «изменить» затем нажмите на кнопку «применить».
- Возле поля комментарии выберите пункт «запретить» и нажмите «обновить».
После чего на выбранных страницах пропадет возможность оставлять комментарии.
Лайфхак для тех, у кого очень много статей, но хочется сделать это максимально быстро и удобно.
В разделе страницы или записи тыкаем на кнопку «настройки экрана» и меняем «количество элементов на странице» на необходимое, изначально стоит 20, мы может установить любое нужно нам значение, например 100.
Лайфках годный до тех пор пока у вас несколько сотен постов, после отметки в 1000+ записей показывать это все на одной странице будет мягко скажем заторможено. В общем не советую так делать если у вас овердопупа статей.
Отключение комментариев для отдельных записей и страниц по идентификатору id в коде
Не знаю кому данный способ понадобится, все тоже самое можно сделать через админку, но и через код также можно отключить комменты. Мне никогда данный способ не пригождался, если комуто будет полезно — отпишитесь в комментарии в каких случаях вам это пригодилось?
// Отключение комментариев для определенной страницы по ID
function disable_comments_on_specific_page( $open, $post_id ) {
if ( $post_id == 123 ) { // замените 123 на ID вашей страницы
return false;
}
return $open;
}
add_filter( 'comments_open', 'disable_comments_on_specific_page', 10, 2 );
Отключение комментариев wordperess для определенных типов записей
Этот способ действительно актуальный когда у вас есть раздел блога с типом записей post и там должны быть комментарии. И есть обычные страницы, где тип записей page и комментарии не нужны.
function disable_comments_for_cpt( $open, $post_id ) {
$post_type = get_post_type( $post_id );
// Замените 'your_custom_post_type' на идентификатор вашего типа записи
if ( $post_type == 'your_custom_post_type' ) {
return false;
}
return $open;
}
add_filter( 'comments_open', 'disable_comments_for_cpt', 10, 2 );
Отключение комментариев для определенных таксономий WP
Подойдет для тех, кто использует готовые темы или работает с чужим кодом. Потому как изначально у таксономий нет встроенного функционала, который позволяет оставлять комментарии. Реальный пример это интернет магазин на wordpress в котором есть возможность комментировать категории товаров (странно, но и так тоже можно). Не советую вообще использовать готовые темы, но если так случилось, то пользуйтесь.
function disable_comments_for_taxonomy( $open, $post_id ) {
$taxonomies = get_post_taxonomies( $post_id );
// Замените 'your_taxonomy' на идентификатор вашей таксономии
if ( in_array( 'your_taxonomy', $taxonomies ) ) {
return false;
}
return $open;
}
add_filter( 'comments_open', 'disable_comments_for_taxonomy', 10, 2 );
Отключение комментариев для определенных категорий постов Вордпрес
Например у вас есть раздел статей или блог с разными категорями и не везде нужны комментарии. В таком случае вы можете запретить обсуждение для отдельных категорий. Главное правильно указать название ‘slug‘ категории.
function disable_comments_for_category( $open, $post_id ) {
$categories = get_the_category( $post_id );
foreach ( $categories as $category ) {
// Замените 'your_category_slug' на ярлык вашей категории
if ( $category->slug == 'your_category_slug' ) {
return false;
}
}
return $open;
}
add_filter( 'comments_open', 'disable_comments_for_category', 10, 2 );
В каждом из этих примеров кода замените 'your_custom_post_type'
, 'your_taxonomy'
или 'your_category_slug'
на соответствующие идентификаторы в вашем сайте WordPress. Эти фрагменты кода проверяют тип записи, таксономии или категории текущего поста, и если они соответствуют указанным вами, комментарии будут отключены.
Удаляем код который выводит комментари в шаблоне записи singl.php
Данную процедуру лучше проделывать в дочерней теме или если вы создали собственную тему и редактируете ее. Если же вы используете купленную или беслатную тему — создайте свою дочернюю тему и удаляйте код отвечающий за вывод комменатрий в ней. Иначе после обновления темы, внесенные вами изменения исчезнут.
Файл в котором находится код вывода комментов wp по в дефолтных темах называется singl.php и находится он в папке вашей темы по адресу ‘ваш-сайт/wp-content/themes/ваша-тема/single.php’
Откроем данный файл через стандартный функционал админки WP. Перейдем в раздел внешний вид -> Редактор тем.
Затем выберем нужный нам файл под названием отдельная запись или single.php и удалим следующий код:
Примечание. Если вы работаете с готовой темой или дорабатываете за кем-то чужой код, вариацый вывода комментариев в шаблоне записи может несколько, вот основные из них:
Это стандартный метод вывода комментариев в WordPress
<?php
comments_template();
?>
Использование функции comment_form()
:
<?php
comment_form();
wp_list_comments();
?>
Это функция, которая выводит форму комментариев, и ее можно использовать вместе с wp_list_comments()
для вывода существующих комментариев.
Использование шорткода [comments]
:
<?php
echo do_shortcode('[comments]');
?>
В некоторых темах или плагинах может быть встроен шорткод для вывода комментариев.
Использование пользовательского цикла для комментариев
Это простой пример того, как можно построить свой собственный цикл вывода комментов. У вас код может отличаться, это простой пример чтобы ориентироваться, если вы наткнетесь на что-то подобное.
<?php
$args = array(
'post_id' => get_the_ID(),
);
$comments = get_comments($args);
wp_list_comments(array(), $comments);
?>
Использование хуков и фильтров для вывода комментариев в WordPress
Данный хук может быть в файле function.php или подключен отдельным файлом и выглядеть следующим образом:
<?php
add_filter('comments_array', 'my_custom_comments_array', 10, 2);
function my_custom_comments_array($comments, $post_id) {
// ваш код для изменения массива комментариев
return $comments;
}
comments_template();
?>
Удаление всех комментариев с сайта и очистка базы данных WordPress
Ну и финальные штрихи для тех у кого уже была целая гора комментов и после того как мы закрыли возможность комментирования — нам осталось почистить сайт и базу данных WP от лишнего мусора. Далее рассмотрим 2 варианта: через SQL запрос и через файл function.php
SQL-запрос для очистки базы данных от комментариев WP
- Войдите в phpMyAdmin или другой инструмент управления базой данных, которым вы пользуетесь.
- Выберите вашу базу данных WordPress.
- Выполните следующие SQL-запросы:
-- Удалить все комментарии
DELETE FROM wp_comments;
-- Очистить таблицу метаданных комментариев
DELETE FROM wp_commentmeta;
-- Оптимизировать таблицы
OPTIMIZE TABLE wp_comments, wp_commentmeta;
Очистка базы данных от комментариев через файл functions.php
Данный код необходимо добавить в самый низ файла functions.php вашей темы, сохранить изменения, подождать несколько минут, затем проверить удалились ли ваши комментарии с сайта. После того как комменты будут удалены с сайты — данный код необходимо удалить.
function delete_all_comments() {
global $wpdb;
$wpdb->query( "TRUNCATE TABLE $wpdb->comments" );
$wpdb->query( "TRUNCATE TABLE $wpdb->commentmeta" );
}
add_action( 'init', 'delete_all_comments' );
Финалочка
Отключение комментариев в WordPress — это эффективный способ борьбы со спамом и наведения порядка на сайте. Выбирайте какой подхом вам больше нравится и забудьте навсегда о проблемах со спамом.
Для отправки комментария вам необходимо авторизоваться.