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

Диагностика проблемы с устаревшими отзывами в WooCommerce

Магазины на WooCommerce часто сталкиваются с накоплением большого количества отзывов. Старые отзывы могут быть неактуальны, снижать доверие к товару или занимать место в базе данных, замедляя сайт. Встроенных инструментов для автоматического удаления старых отзывов по дате в WooCommerce нет, поэтому требуется кастомное решение.

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

1. Выбор критерия удаления

Чаще всего отзывы удаляют, если они старше определённого периода (например, 1 год). Для этого нужно сравнивать дату публикации комментария с текущей датой.

2. Написание PHP-функции для удаления

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

function wc_delete_old_reviews( $days = 365 ) {
    global $wpdb;
    $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 - без возможности восстановления
        }
    }
}

3. Автоматизация через WP-Cron

Чтобы удаление происходило регулярно, зарегистрируем задачу WP-Cron. Например, ежедневный запуск.

function wc_schedule_review_deletion() {
    if ( ! wp_next_scheduled( 'wc_daily_review_deletion' ) ) {
        wp_schedule_event( time(), 'daily', 'wc_daily_review_deletion' );
    }
}
add_action( 'wp', 'wc_schedule_review_deletion' );

add_action( 'wc_daily_review_deletion', function() {
    wc_delete_old_reviews( 365 ); // удаляем отзывы старше 365 дней
});

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

  • Создайте тестовый отзыв с датой более 365 дней назад (можно вручную в базе данных или через плагин для редактирования комментариев).
  • Запустите функцию вручную, вызвав wc_delete_old_reviews(365); из консоли WP-CLI или временно в коде.
  • Проверьте в админке WooCommerce, что старый отзыв удалился.
  • Проверьте логи сервера или добавьте error_log в функцию для отслеживания удаления.

Частые ошибки и способы их устранения

  • Отзывы не удаляются: возможно, задача WP-Cron не срабатывает. Проверьте с помощью плагина WP Crontrol, есть ли запланированное событие wc_daily_review_deletion.
  • Функция удаляет не все старые отзывы: проверьте правильность даты и формат даты в базе. Убедитесь, что комментарии действительно имеют comment_type = 'review'.
  • Ошибка доступа при удалении: убедитесь, что у PHP достаточно прав для удаления комментариев, что нет конфликтов с плагинами безопасности.

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

  • Удаление большого количества отзывов за один раз может нагрузить базу. Можно оптимизировать функцию, удаляя отзывы порциями, например по 100 штук за раз.
  • Для безопасности оборачивайте вызов функции в проверки прав администратора, если вызываете вручную.
  • Резервное копирование базы перед включением автоматического удаления – обязательное условие.
  • Для контроля добавьте логирование удалённых комментариев в отдельный файл или в системный лог.

Сравнение вариантов реализации автоматического удаления отзывов

МетодПлюсыМинусы
Ручное удаление через админкуПростота, полный контрольЗатратно по времени, риски пропуска
Плагин для очистки комментариевУдобство, графический интерфейсЗависимость от стороннего кода, нагрузка на сайт
Кастомный код с WP-Cron (наш вариант)Автоматизация, гибкость, без сторонних плагиновТребует навыков, настройка WP-Cron
WooCommerce: установка и настройка автоматического возврата денег по заказам
07.05.2026
Как настроить загрузку изображений Lazy Load в WordPress без плагинов
04.03.2026
Как использовать WPRemark для автоматического модерирования комментариев в WordPress
17.12.2025
Как использовать WordPress hooks для автоматизации задач
12.11.2025
Как использовать WP-Cron для автоматизации задач в WordPress
03.05.2026