WooCommerce: автоматическое удаление отзывов после 30 дней

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

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

Автоматизация удаления отзывов по времени — практическое решение для поддержки актуальности отзывов на сайте.

Как реализовать автоматическое удаление отзывов через 30 дней

1. Использование WP-Cron для планирования задачи

WordPress имеет встроенный планировщик заданий — WP-Cron. Для удаления отзывов старше 30 дней создадим функцию и запланируем её запуск раз в сутки.

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

add_action( 'wpnote_delete_old_reviews_hook', 'wpnote_delete_old_reviews' );

function wpnote_delete_old_reviews() {
    global $wpdb;
    $days = 30;
    $date_threshold = date( 'Y-m-d H:i:s', strtotime( "-{$days} days" ) );

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

    if ( ! empty( $old_reviews ) ) {
        foreach ( $old_reviews as $comment_id ) {
            wp_delete_comment( $comment_id, true ); // true — принудительно удаляет
        }
    }
}

2. Особенности работы с отзывами WooCommerce

По умолчанию WooCommerce использует тип комментария review для отзывов. Важно фильтровать именно их, чтобы не удалять обычные комментарии к записям.

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

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

Для проверки работы скрипта:

  • Добавьте тестовый отзыв с датой старше 30 дней (можно вручную в базе данных или через админку, изменив дату комментария).
  • Запустите WP-Cron вручную, например, с помощью плагина WP Crontrol или через WP-CLI команду:
wp cron event run wpnote_delete_old_reviews_hook
  • Проверьте, что комментарий удалён из списка отзывов в админке WooCommerce.

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

  • Отзывы не удаляются: проверьте, что WP-Cron работает корректно. На локальном сервере cron может не запускаться без внешних запросов — используйте системный cron или WP-CLI.
  • Удаляются не только отзывы: убедитесь, что в SQL-запросе указан правильный тип комментария comment_type = 'review'.
  • Отзывы не идентифицируются как отзывы: если тема или плагин изменяет тип комментариев, исправьте фильтр или используйте мета-запрос для идентификации.
  • Производительность падает на больших магазинах: используйте пакетную обработку (например, удалять по 100 отзывов за раз) и оптимизируйте запросы.

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

  • Резервное копирование базы данных перед внедрением автоматического удаления — обязательно.
  • Логирование удалений — добавьте запись в лог файл или в отдельную таблицу для аудита действий.
  • Пакетная обработка — для магазинов с тысячами отзывов применяйте лимит и делайте несколько проходов, чтобы избежать таймаутов.
  • Использование системного Cron вместо WP-Cron — более надёжно для регулярных задач, особенно на больших сайтах.

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

  1. Проверьте, что отзывы WooCommerce имеют тип комментария review.
  2. Добавьте код планировщика и функции удаления в файл functions.php или в отдельный плагин.
  3. Настройте запуск cron задачи (WP-Cron или системный cron).
  4. Протестируйте работу на тестовой базе с отзывами старше 30 дней.
  5. Добавьте логирование для контроля удалений.
  6. Мониторьте производительность и корректность работы после запуска.

Альтернативы: плагины и код — сравнение

РешениеПлюсыМинусы
Самописный код (как в статье)Полный контроль, бесплатно, легко модифицироватьТребует навыков, нужно следить за WP-Cron
Плагин для управления отзывами (например, WP Review)Простая настройка, дополнительные функции анализаМожет нагружать сайт, ограничена кастомизация
Использование внешних сервисов и интеграцийАвтоматизация, аналитика, поддержкаПлата за сервис, зависимость от сторонних решений
Как создать автоматический отчет о проблемах WordPress
27.01.2026
WooCommerce: не отображается кнопка «Добавить в корзину» при использовании кастомных шаблонов — как исправить
31.05.2026
Как использовать хуки в WordPress для расширения функциональности
17.11.2025
WooCommerce: автоматическое отключение неактивных вариантов товаров
16.06.2026
WooCommerce: автоматическое изменение стоимости товара при выборе вариантов
25.05.2026