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

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

Магазины на WooCommerce часто накапливают большое количество отзывов. При этом старые отзывы могут быть неактуальными, содержать устаревшую информацию или снижать общий рейтинг товара из-за изменений в продукте. Ручное удаление отзывов неудобно и времязатратно. Автоматизация этого процесса позволяет поддерживать актуальность отзывов и облегчает администрирование.

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

WooCommerce хранит отзывы в виде комментариев с типом comment_type = 'review'. Мы можем написать функцию, которая будет удалять отзывы старше определённого количества дней, например, 180 дней.

Добавьте следующий код в файл functions.php вашей дочерней темы или в кастомный плагин:

function wpmarket_delete_old_woocommerce_reviews() {
    global $wpdb;
    $days = 180; // Удалять отзывы старше 180 дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-'. $days .' days'));

    // Получаем ID комментариев-отзывов старше порога
    $old_reviews = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM {$wpdb->comments} 
         WHERE comment_type = 'review' 
         AND comment_date < %s",
        $date_threshold
    ));

    if (!empty($old_reviews)) {
        foreach ($old_reviews as $comment_id) {
            wp_delete_comment($comment_id, true); // true - удалить навсегда
        }
    }
}

// Запускаем функцию раз в сутки с помощью WP-Cron
if (!wp_next_scheduled('wpmarket_daily_delete_old_reviews')) {
    wp_schedule_event(time(), 'daily', 'wpmarket_daily_delete_old_reviews');
}
add_action('wpmarket_daily_delete_old_reviews', 'wpmarket_delete_old_woocommerce_reviews');

Этот код создает ежедневное событие, которое удаляет все отзывы старше 180 дней.

Как настроить интервал удаления

Чтобы изменить период удаления, поменяйте значение переменной $days на нужное количество дней.

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

  • Откройте базу данных, например через phpMyAdmin, и выполните запрос:
SELECT COUNT(*) FROM wp_comments WHERE comment_type = 'review' AND comment_date < DATE_SUB(NOW(), INTERVAL 180 DAY);

Если количество отзывов, подходящих под условие, уменьшается после запуска задачи, значит скрипт работает.

  • В админке WordPress зайдите в раздел «Отзывы» (или «Комментарии» с фильтром по типу) и проверьте наличие старых отзывов.

Для ручного запуска функции во время тестирования можно вызвать wpmarket_delete_old_woocommerce_reviews(); через WP-CLI или временно добавить вызов в functions.php.

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

  • Отсутствие cron-задачи: Если событие wpmarket_daily_delete_old_reviews не запускается, проверьте, работает ли WP-Cron. На некоторых серверах он отключен. В этом случае настройте системный cron для запуска wp-cron.php.
  • Удаление не тех комментариев: Убедитесь, что в базе у отзывов указан comment_type = 'review'. Если используется другой тип, измените условие запроса.
  • Права доступа: Функция wp_delete_comment() требует прав администратора. Запускайте код только от имени администратора.
  • Кэш и индексы: После удаления отзывов может потребоваться очистить кэш сайта и поисковых индексов.

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

  • Для больших магазинов удаление большого количества отзывов за один раз может вызвать нагрузку. В этом случае реализуйте пакетное удаление, например по 50 отзывов за один запуск, используя LIMIT в SQL-запросе.
  • Перед удалением сделайте автоматический бэкап базы, например с помощью плагина Clearfy Pro или другого надежного решения.
  • Отключите удаление отзывов, если ваш магазин использует сторонние плагины для отзывов с другой структурой хранения — код нужно адаптировать.
  • Для ускорения работы используйте транзиенты для кеширования результатов запроса ID отзывов, чтобы не нагружать базу при каждом запуске.

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

МетодПлюсыМинусы
Ручное удаление в админкеПросто, не требует кодаНевозможно автоматизировать, долго для больших объемов
WP-Cron с кастомным кодом (описанный способ)Автоматизация, гибкость настройкиЗависит от корректной работы WP-Cron, требует базовых знаний PHP
Плагины для очистки базы (например Clearfy Pro)Удобный интерфейс, доп. функции безопасностиМожет быть платным, не всегда адаптирован под отзывы WooCommerce
Как создать настройки для плагина с AJAX в WordPress
28.02.2026
Как исключить товар из показа и поисковой индексации в WooCommerce
06.05.2026
Как использовать хук woocommerce_checkout_update_order_meta для добавления данных к заказу в WooCommerce
18.05.2026
Как установить автоматический бэкап в WordPress с помощью плагинов
24.03.2026
Как создать автоматический импорт последних новостей в WordPress с помощью WPMarket
08.02.2026