Как отключить комментарии в WordPress

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

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

Оглавление:

Полное отключение всех комментариев в WordPress через админку сайта

Через админку вордпреса можно деактивировать возможность комментирования полностью. Для этого необходимо выполнить следующие действия:

  • Перейдите в раздел «Настройки» → «Обсуждение».
  • Снимите галочку с пункта «Разрешить оставлять комментарии к новым записям».
Полное отключение всех комментариев в 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 и удалим следующий код:

удаляем код вывода комментариев в шаблоне отдельная запись 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 — это эффективный способ борьбы со спамом и наведения порядка на сайте. Выбирайте какой подхом вам больше нравится и забудьте навсегда о проблемах со спамом.

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

Популярные статьи: