Как удалить старые отзывы WooCommerce без плагинов

Диагностика проблемы: зачем удалять старые отзывы в WooCommerce

Отзывы в WooCommerce хранятся в таблице wp_comments с типом comment_type = 'review'. Со временем их количество может вырасти до сотен тысяч, что замедляет запросы к базе данных и влияет на производительность сайта. Особенно это актуально для магазинов с большим количеством товаров и активной системой отзывов.

Удаление старых или неактуальных отзывов помогает:

  • Оптимизировать размер базы данных
  • Ускорить загрузку страниц с отзывами
  • Избавиться от спама и некачественных комментариев

Пошаговое решение: как удалить отзывы старше определённой даты через код

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

Вариант 1: Использование WP-CLI

WP-CLI позволяет быстро и безопасно удалять отзывы из командной строки. Для удаления всех отзывов старше 1 января 2022 года выполните:

wp comment delete $(wp comment list --comment_type=review --date_query_column=comment_date --before=2022-01-01 --format=ids) --force

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

Вариант 2: PHP-скрипт для удаления старых отзывов

Если доступа к WP-CLI нет, можно использовать следующий код в теме или подключаемом плагине (например, через functions.php), но запускать один раз, а потом удалять:

function delete_old_woocommerce_reviews() {
    global $wpdb;
    $date_threshold = '2022-01-01 00:00:00';
    
    // Получаем ID старых отзывов
    $comment_ids = $wpdb->get_col( $wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_type = %s AND comment_date < %s",
        'review',
        $date_threshold
    ) );

    if ( empty($comment_ids) ) {
        return;
    }

    foreach ( $comment_ids as $comment_id ) {
        wp_delete_comment( $comment_id, true );
    }
}

// Вызываем функцию один раз
add_action('init', function() {
    if ( current_user_can('manage_options') && isset($_GET['delete_old_reviews']) ) {
        delete_old_woocommerce_reviews();
        wp_die('Удаление старых отзывов выполнено');
    }
});

Для запуска перейдите в браузере по адресу https://ваш-сайт.ru/?delete_old_reviews=1 под админом.

Проверка результата после удаления старых отзывов

  • В админке WordPress в разделе «Отзывы» проверьте количество комментариев — оно должно уменьшиться.
  • В базе данных через phpMyAdmin выполните запрос:
SELECT COUNT(*) FROM wp_comments WHERE comment_type = 'review' AND comment_date < '2022-01-01';

Он должен возвращать 0.

  • Проверьте скорость загрузки страниц товаров с отзывами — она должна улучшиться, если было много старых отзывов.

Частые ошибки и как их исправить

  • Отзывы не удаляются: проверьте, есть ли права администратора и корректно ли подключена база данных.
  • Удаляются не все отзывы: убедитесь, что дата порога указана правильно и используется именно фильтр comment_type='review'.
  • Сайт выдает ошибки после запуска скрипта: возможно, скрипт запущен многократно или некорректно. Уберите вызов после первого использования.

Практические советы по безопасности и производительности

  • Всегда делайте резервную копию базы данных перед массовым удалением данных.
  • Запускайте удаление отзывов в ночное время, чтобы не нагружать сервер при пиковых посещениях.
  • Для больших сайтов делайте удаление по частям, например, по 1000 отзывов за раз, чтобы избежать тайм-аутов PHP.
  • После удаления запустите оптимизацию таблиц wp_comments через phpMyAdmin или WP-CLI (wp db optimize).

Сравнение способов удаления старых отзывов

МетодПлюсыМинусыКомпромисс
WP-CLI Быстро, надежно, нет нагрузки на PHP Нужен SSH-доступ и базовые навыки консоли Идеально для опытных администраторов
PHP-скрипт Работает на любом хостинге, нет необходимости в SSH Нагрузка на сервер, риск тайм-аутов, требует ручного запуска Подходит для небольших сайтов
Как использовать WP REST API для создания простого плагина в WordPress
12.02.2026
Как избежать конфликтов между WooCommerce и кастомными темами WordPress
25.04.2026
Как настроить ограничение на количество покупок товара в WooCommerce
09.05.2026
Как использовать WP REST API для создания комплексных фильтров в WordPress
29.03.2026
WooCommerce: как установить ограничение на количество покупок товара
17.05.2026