Как удалить все комментарии в WordPress программно

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

Почему стоит удалять комментарии программно

Удаление комментариев через админ-панель WordPress неудобно и неэффективно, если их тысячи. Ручная очистка займет много времени и ресурсов. Использование SQL-запросов напрямую к базе данных может быть рискованным для неопытных пользователей и привести к потере данных или повреждению базы.

Программный способ удаления комментариев с помощью PHP-кода в файлах темы или через плагин даёт гибкость, безопасность и контроль над процессом, позволяя обрабатывать комментарии партиями, логировать результаты и интегрировать очистку в автоматизированные задачи.

Функция для удаления всех комментариев в WordPress — пример кода

Ниже приведён пример функции wptests_delete_all_comments(), которая удаляет все комментарии на сайте программно. Код можно добавить в файл functions.php вашей темы или в собственный плагин.

function wptests_delete_all_comments() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return; // Только администратор может запускать эту функцию
    }

    // Получаем все ID комментариев
    global $wpdb;
    $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM {$wpdb->comments}" );

    if ( empty( $comment_ids ) ) {
        return; // Нет комментариев для удаления
    }

    foreach ( $comment_ids as $comment_id ) {
        wp_delete_comment( $comment_id, true ); // true — удаляет без проверки, полностью
    }
}

Для запуска функции можно вызвать её из административного хука или добавить кнопку в админ-панель. Например, вызов в admin_init с проверкой nonce:

add_action( 'admin_init', function() {
    if ( isset( $_GET['wptests_delete_comments'] ) && check_admin_referer( 'wptests_delete_comments_action', 'wptests_delete_comments_nonce' ) ) {
        wptests_delete_all_comments();
        wp_redirect( admin_url() );
        exit;
    }
} );

Как добавить кнопку для удаления комментариев в админ-панель

Для удобства можно добавить страницу в меню администратора с кнопкой, которая запускает удаление комментариев. Вот пример кода:

add_action( 'admin_menu', function() {
    add_submenu_page(
        'tools.php',
        'Удалить все комментарии',
        'Удалить все комментарии',
        'manage_options',
        'wptests-delete-comments',
        'wptests_delete_comments_page'
    );
} );

function wptests_delete_comments_page() {
    if ( isset( $_POST['wptests_delete_comments_submit'] ) && check_admin_referer( 'wptests_delete_comments_action', 'wptests_delete_comments_nonce' ) ) {
        wptests_delete_all_comments();
        echo '<div class="updated"><p>Все комментарии успешно удалены.</p></div>';
    }
    ?>
    <div class="wrap">
        <h1>Удалить все комментарии</h1>
        <form method="post">
            <?php wp_nonce_field( 'wptests_delete_comments_action', 'wptests_delete_comments_nonce' ); ?>
            <p>Нажмите кнопку ниже, чтобы удалить все комментарии из базы данных без возможности восстановления.</p>
            <p><input type="submit" name="wptests_delete_comments_submit" class="button button-danger" value="Удалить все комментарии"></p>
        </form>
    </div>
    <?php
}

Альтернативные методы удаления комментариев

Через SQL-запрос к базе данных

Если вы уверены в своих действиях и имеете доступ к phpMyAdmin или консоли MySQL, можно очистить таблицу комментариев напрямую:

DELETE FROM wp_comments;
DELETE FROM wp_commentmeta;

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

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

Существуют плагины, такие как Disable Comments или Bulk Delete, которые позволяют массово удалять комментарии. Однако они добавляют дополнительную нагрузку и зависят от поддержки автора.

Рекомендации по безопасности и производительности

Удаление большого количества комментариев может занять значительное время и нагрузить сервер. Рекомендуется выполнять такие операции в периоды минимальной активности сайта.

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

Также стоит ограничивать доступ к функциям удаления комментариев только администраторам и защищать действия nonce-полями для предотвращения CSRF-атак.

Заключение

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

Если хотите автоматизировать работу с комментариями и отзывами, обратите внимание на плагины от WPSHOP, например, WPRemark, который позволяет гибко управлять отзывами и комментариями.

Как использовать WPCommunity для создания социальной сети на WordPress
26.02.2026
WooCommerce: автоматическое изменение стоимости товара при сменах вариаций с подробной диагностикой
10.07.2026
WooCommerce: автоматическое изменение стоимости товара при смене вариации
11.06.2026
WooCommerce: автоматическое изменение стоимости товара при смене вариаций с подробной диагностикой
15.07.2026
Как изменить способ отображения категорий в WordPress
02.02.2026