Как удалить все комментарии в 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 с помощью PHP кода
22.03.2026
Как удалить записи из категории WordPress без удаления самих записей
27.12.2025
Как создать уникальный плагин для оптимизации базы данных WordPress
09.04.2026
Как удалить неиспользуемые метаданные WordPress
23.12.2025
Оптимизация базы данных WordPress: лучшие методы и примеры
21.11.2025