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

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

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

Стандартного функционала в WooCommerce или WordPress для автоматического удаления отзывов по дате нет. Решение требует кастомизации с помощью кода.

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

Шаг 1. Добавляем WP-Cron задачу для автоматизации

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

if ( ! wp_next_scheduled( 'wc_delete_old_reviews_daily' ) ) {
    wp_schedule_event( time(), 'daily', 'wc_delete_old_reviews_daily' );
}

add_action( 'wc_delete_old_reviews_daily', 'wc_delete_reviews_older_than_30_days' );

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

    $comments_to_delete = $wpdb->get_col( $wpdb->prepare(
        "SELECT comment_ID FROM {$wpdb->comments} WHERE comment_type = 'review' AND comment_date < %s",
        $date_threshold
    ) );

    if ( ! empty( $comments_to_delete ) ) {
        foreach ( $comments_to_delete as $comment_id ) {
            wp_delete_comment( $comment_id, true );
        }
    }
}

Шаг 2. Проверяем, что отзывы помечены как review

WooCommerce использует тип комментария review для отзывов к товарам, а не обычные комментарии. Это ключ к корректному выбору отзывов для удаления. Если у вас кастомный тип комментариев, замените comment_type = 'review' на ваш вариант.

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

Чтобы проверить, работает ли задача:

  • Вручную создайте несколько отзывов с датами старше 30 дней (можно через базу или плагины для тестирования дат комментариев).
  • Запустите функцию вручную, вызвав wc_delete_reviews_older_than_30_days() из консоли WP-CLI wp eval 'wc_delete_reviews_older_than_30_days();' или добавьте вызов один раз в functions.php.
  • Проверьте, что старые отзывы удалились из админки (Комментарии - Отзывы) и с фронтенда.
  • Убедитесь, что новые отзывы не удаляются.

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

  • Отзывы не удаляются: проверьте, что тип комментария review действительно используется. В базе данных в таблице wp_comments поле comment_type должно содержать review.
  • WP-Cron не запускается: стандартный WP-Cron запускается при посещении сайта. Для отладки используйте плагин WP Crontrol или запускайте крон вручную через WP-CLI.
  • Удаление отзывов ведёт к ошибкам: убедитесь, что используете wp_delete_comment() с параметром true для полного удаления, включая метаданные.

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

  • Не запускайте удаление отзывов слишком часто. Один раз в сутки — оптимально.
  • Для больших сайтов с тысячами отзывов используйте пакетную обработку по 100 отзывов за один запуск, чтобы избежать таймаута PHP.
  • Перед удалением рекомендуем создать резервную копию базы данных.
  • Для безопасности убедитесь, что код выполняется только в административной части или через WP-Cron, чтобы исключить запуск злоумышленниками.

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

МетодОписаниеПлюсыМинусы
Плагин WP Crontrol + кастомный кодНастройка WP-Cron и кастомной функции удаленияГибкость, контроль, бесплатное решениеТребует знаний PHP, ручная настройка
Пользовательский плагин автоматизацииПлагин с UI для настройки срока удаления отзывовУдобство для администраторов без кодаМожет нагружать сайт, зависимость от стороннего кода
Удаление вручную через базу данныхSQL-запросы для удаления старых отзывовБыстро, без нагрузки на WP-CronРиски потери данных, требует опыт работы с базой
WooCommerce: не работает обновление статуса заказа через REST API — как исправить
02.07.2026
Как создать автоматическое отображение списка вариантов ответа в вопросниках WordPress
11.01.2026
Как создать автоматический отзыв на блоке Gutenberg в WordPress
07.04.2026
WooCommerce: не отображается кнопка «Добавить в корзину» при использовании кастомных шаблонов — как исправить
31.05.2026
Как создать свой плагин для WooCommerce: пошаговое руководство
28.11.2025