Как удалить все комментарии из базы WordPress с помощью кода

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

Почему стоит удалять комментарии через код, а не вручную

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

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

Удаление всех комментариев с помощью функции wpnote_delete_all_comments()

Создадим функцию, которая удалит все комментарии, используя WordPress функцию wp_delete_comment. Она учитывает все связанные данные и удаляет комментарии корректно.

function wpnote_delete_all_comments() {
    global $wpdb;
    // Получаем все ID комментариев
    $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM {$wpdb->comments}" );
    
    if (empty($comment_ids)) {
        echo 'Комментарии отсутствуют.';
        return;
    }
    
    foreach ($comment_ids as $comment_id) {
        // Удаляем комментарий без возможности восстановления
        wp_delete_comment( $comment_id, true );
    }
    echo 'Все комментарии были удалены.';
}

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

Как безопасно использовать функцию удаления комментариев

Для безопасности добавим проверку прав пользователя и nonce, если будет форма для запуска. Вот пример, как сделать кнопку в админке, которая запускает очистку:

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

function wpnote_render_delete_comments_page() {
    if (isset($_POST['wpnote_delete_comments_nonce']) && 
        wp_verify_nonce($_POST['wpnote_delete_comments_nonce'], 'wpnote_delete_comments')) {
        wpnote_delete_all_comments();
    }
    ?>
    <h1>Удалить все комментарии</h1>
    <form method="post">
        <?php wp_nonce_field('wpnote_delete_comments', 'wpnote_delete_comments_nonce'); ?>
        <p>Нажмите кнопку ниже, чтобы удалить все комментарии без возможности восстановления.</p>
        <input type="submit" value="Удалить все комментарии" class="button button-danger" onclick="return confirm('Вы уверены, что хотите удалить все комментарии? Это действие необратимо!');">
    </form>
    <?php
}

Удаление комментариев с помощью SQL-запроса (альтернативный метод)

Если вы уверены в своих действиях, можно выполнить SQL-запрос напрямую через phpMyAdmin или WPDB. Однако этот способ не удаляет связанные метаданные и кэш, поэтому рекомендуется использовать API WordPress.

global $wpdb;
$wpdb->query( "DELETE FROM {$wpdb->comments}" );
$wpdb->query( "DELETE FROM {$wpdb->commentmeta}" );

После этого стоит очистить кеш и пересчитать счетчики комментариев для всех записей.

Пересчет количества комментариев для записей

Чтобы не было рассинхронизации, используйте функцию:

function wpnote_recount_comments_count() {
    global $wpdb;
    $post_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type IN ('post','page') AND post_status='publish'");
    foreach ($post_ids as $post_id) {
        wp_update_comment_count($post_id);
    }
}

Вызовите wpnote_recount_comments_count() после удаления комментариев для корректного обновления счетчиков.

Использование плагинов для удаления комментариев

Если код — не ваш вариант, есть бесплатные плагины в репозитории WordPress, которые позволяют массово удалять комментарии:

  • Delete All Comments of a Post — удаляет комментарии у конкретных записей.
  • WP Bulk Delete — позволяет фильтровать и удалять комментарии по разным параметрам.
  • Clearfy Pro — в премиум версии есть функция очистки базы от мусорных данных, включая комментарии.

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

Подведение итогов и рекомендации

Удаление всех комментариев из базы WordPress — частая задача при очистке или подготовке сайта. Лучший способ — использовать встроенные функции WordPress для корректного удаления с учетом всех зависимостей. Если нужно быстро и просто — воспользуйтесь плагинами, но для гибкости и безопасности рекомендуем собственный код с проверками прав и подтверждениями.

Не забывайте создавать резервные копии базы перед массовыми операциями и тестировать код в безопасной среде.

Для примера полноценного плагина с такой функцией можно ознакомиться с материалами на WPSHOP.ru.

Как использовать плагин CPT UI для создания собственных типов записей в WordPress
09.12.2025
Автоматическое создание изображений thumbnail в WordPress: практическое руководство
18.12.2025
Как добавить поддержку JSON-LD в WordPress
25.11.2025
Как автоматизировать создание резервных копий в WordPress
04.02.2026
Как создать собственный виджет в WordPress: практическое руководство
10.11.2025