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

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

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

Проверить необходимость автоматизации можно через админ-панель WordPress: в разделе Отзывы посмотрите количество отзывов и их актуальность. Если много устаревших или спамных, и они негативно влияют на репутацию магазина — стоит задуматься об автоматизации.

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

1. Создаем кастомную функцию удаления отзывов

Сначала пишем функцию, которая будет удалять отзывы старше определенного срока (например, 90 дней):

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

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

    if (!empty($comments)) {
        foreach ($comments as $comment_id) {
            wp_delete_comment($comment_id, true); // Полное удаление
        }
    }
}

2. Регистрируем кастомное событие cron

Добавляем хук для регулярного запуска функции. В данном примере — раз в день.

add_action('wc_daily_review_cleanup', 'wc_delete_old_reviews');

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

3. Добавляем код в functions.php или отдельный плагин

Рекомендуется создать небольшой плагин с этим кодом, чтобы не потерять изменения при обновлении темы. Если не хотите создавать плагин — добавьте код в functions.php текущей дочерней темы.

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

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

  • В админке WordPress в разделе Отзывы найдите отзывы старше 90 дней.
  • Запустите вручную событие cron через WP-CLI:
    wp cron event run wc_daily_review_cleanup
  • Проверьте, что эти отзывы удалились.

Если WP-CLI нет — можно временно вызвать функцию wc_delete_old_reviews() напрямую через админский плагин типа Code Snippets или временно в functions.php для теста.

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

  • Отзывы не удаляются: Проверьте, что комментарии имеют тип review. В WooCommerce именно так маркируются отзывы. Если тип другой, запрос не найдет отзывы.
  • Cron не запускается: Убедитесь, что WP-Cron активирован. Для серверов с отключенным WP-Cron настройте системный cron для вызова wp-cron.php.
  • Удаляются не те отзывы: Проверьте дату и временную зону сайта — возможно, дата порога неверно рассчитывается.
  • Ошибка прав доступа: Функция wp_delete_comment требует прав администратора. Убедитесь, что код запускается с нужными правами.

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

  • Не удаляйте отзывы без резервной копии — создавайте резервные копии базы перед автоматическими операциями.
  • Для больших магазинов с тысячами отзывов разбивайте удаление на несколько запросов, чтобы избежать таймаутов.
  • Используйте WP-CLI для запуска cron-заданий при больших нагрузках — так надежнее, чем wp-cron.
  • Ограничьте права на редактирование кода — код должен менять только администратор.

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

ВариантПлюсыМинусы
Ручное удалениеПолный контроль, не требует кодаТрудозатратно, неэффективно при большом объеме
Плагины (например, WP Review Remover)Удобство, интерфейсДополнительная нагрузка, риск конфликтов
Код с WP-Cron (описанный выше)Полный контроль, без доп. плагинов, гибкостьТребует навыков, нужно тестировать
Как создать собственный кustomный виджет в WordPress: пошаговое руководство
26.11.2025
WooCommerce: как автоматически отключать товары после распродажи
23.06.2026
Как добавить произвольные поля в WordPress без плагинов
01.12.2025
WordPress авторизация по телефону без плагинов: практическое руководство
10.04.2026
Как добавить динамический контент в блоки Gutenberg в WordPress
04.03.2026