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

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

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

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

Кроме того, код можно использовать в functions.php вашей темы, в отдельном плагине или в консоли WP-CLI, что расширяет возможности и удобство.

Подготовка: резервное копирование базы данных

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

Для резервного копирования можно использовать плагины (например, UpdraftPlus), хостинг-инструменты или выполнить экспорт базы данных через phpMyAdmin.

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

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

function wp24_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 ); // true — без возможности восстановления
    }
    echo 'Все комментарии успешно удалены.';
}

Эта функция использует wp_delete_comment(), чтобы корректно удалить комментарии, включая очистку связанных данных, например, мета комментариев и уведомлений.

Как запустить функцию удаления

Вы можете вызвать wp24_delete_all_comments() в нужном месте, например, добавить вызов в functions.php и временно активировать, либо использовать WP-CLI.

Запуск удаления через WP-CLI

Если у вас есть доступ к консоли и установлен WP-CLI, можно выполнить удаление комментариев быстрее и безопаснее.

Пример команды для удаления всех комментариев:

wp comment delete $(wp comment list --format=ids) --force

Эта команда сначала получает ID всех комментариев, а затем удаляет их принудительно.

Удаление комментариев с определенными статусами

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

function wp24_delete_comments_by_status( $status = 'spam' ) {
    global $wpdb;
    $comment_ids = $wpdb->get_col( $wpdb->prepare(
        "SELECT comment_ID FROM {$wpdb->comments} WHERE comment_approved = %s",
        $status
    ) );
    if ( empty( $comment_ids ) ) {
        echo 'Комментариев с таким статусом не найдено.';
        return;
    }
    foreach ( $comment_ids as $comment_id ) {
        wp_delete_comment( $comment_id, true );
    }
    echo "Комментарии со статусом {$status} удалены.";
}

Можно вызвать, например, wp24_delete_comments_by_status('hold') для удаления комментариев на модерации.

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

Если комментариев очень много (десятки тысяч и более), удаление по одному может занять много времени и привести к таймаутам. В таких случаях рекомендуется:

  • Разбивать удаление на части, например, удалять по 500-1000 комментариев за раз.
  • Использовать WP-CLI, который работает быстрее и надежнее.
  • Оптимизировать базу данных после удаления (например, с помощью OPTIMIZE TABLE).

Пример удаления порциями:

function wp24_delete_comments_in_batches( $batch_size = 500 ) {
    global $wpdb;
    $offset = 0;
    do {
        $comment_ids = $wpdb->get_col( $wpdb->prepare(
            "SELECT comment_ID FROM {$wpdb->comments} LIMIT %d OFFSET %d",
            $batch_size,
            $offset
        ) );
        if ( empty( $comment_ids ) ) break;
        foreach ( $comment_ids as $comment_id ) {
            wp_delete_comment( $comment_id, true );
        }
        $offset += $batch_size;
    } while ( count( $comment_ids ) === $batch_size );
    echo 'Пакетное удаление комментариев завершено.';
}

Заключение по удалению комментариев через код

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

Используйте функции из статьи, адаптируйте их под свои нужды и всегда тестируйте на тестовом сайте перед применением в продакшене.

Оптимизация базы данных WordPress: лучшие методы и примеры
21.11.2025
Как удалить или отключить кэширование в WordPress без плагинов
13.01.2026
Как избежать проблем с кэшированием в WordPress
13.12.2025
Как добавить собственные поля в WordPress без плагинов
02.11.2025
Как использовать хуки WordPress для максимальной гранулярности управления функционалом
02.01.2026