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

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

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

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

1. Определение мета-данных и условий удаления

Отзывы в WooCommerce — это комментарии с типом comment_type = 'review' (или пустое значение для стандартных комментариев, если не подключены плагинами). По умолчанию WooCommerce использует обычные комментарии с типом review для отзывов. Важна дата создания комментария — comment_date.

2. Создание WP-Cron задачи для регулярной очистки

Для автоматизации используем WP-Cron, который будет запускать функцию удаления старых отзывов, например, раз в сутки.

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

add_action( 'wpstuff_delete_old_reviews_daily', 'wpstuff_delete_old_reviews' );

function wpstuff_delete_old_reviews() {
    $days_to_keep = 180; // количество дней, после которых отзывы удаляются
    global $wpdb;

    $date_limit = date( 'Y-m-d H:i:s', strtotime( "-{$days_to_keep} days" ) );

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

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

3. Добавление контроля через админку (опционально)

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

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

  • Запустите функцию вручную для теста — вызовите wpstuff_delete_old_reviews() через консоль WP-CLI или вставьте временно хук в init.
  • Проверьте базу данных: отзывы старше заданного срока должны быть удалены.
  • Проверьте раздел «Отзывы» в админке WooCommerce — старые отзывы отсутствуют.
  • Убедитесь, что новые отзывы остаются нетронутыми.

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

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

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

  • Используйте пакетное удаление, чтобы не перегружать сервер при большом количестве отзывов. Например, удаляйте по 50 штук за раз.
  • Добавьте логирование удалённых отзывов для аудита.
  • Перед удалением можно отправлять уведомления администратору.
  • Для больших баз данных используйте WP-CLI для запуска очистки, это надёжнее и быстрее.

Сравнение методов удаления отзывов

МетодПлюсыМинусы
WP-Cron с кастомной функцией Гибко, бесплатно, можно кастомизировать Зависит от посещаемости сайта, требует навыков
Плагины для очистки комментариев (например, WP Bulk Delete) Удобный интерфейс, дополнительные фильтры Может быть избыточно, нагрузка при больших объёмах
Ручное удаление через админку Просто без кода Неавтоматично, трудозатратно
Как автоматически отключать плагины в WordPress при возникновении ошибок
13.04.2026
Как сделать автоматический откат обновлений WordPress при ошибках
06.03.2026
Как безопасно выполнять пользовательский PHP код в WordPress
21.03.2026
Как автоматизировать удаление отзывов в WooCommerce после определённого срока
03.05.2026
Отчетность WordPress по типам записей: настройка и примеры
13.12.2025