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

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

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

Как понять, что автоматизация необходима

  • Отзывы старше 1 года теряют актуальность для покупателей.
  • Накопилось слишком много отзывов, что замедляет работу сайта.
  • Требуется поддерживать высокие стандарты модерации без дополнительных затрат времени.

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

Для реализации автоматического удаления отзывов в WooCommerce используем планировщик задач WordPress (WP-Cron) и стандартные функции удаления комментариев.

1. Добавление функции удаления отзывов старше N дней

function wpstuff_delete_old_product_reviews() {
    global $wpdb;
    $days = 365; // Срок хранения отзывов в днях

    $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} c
         JOIN {$wpdb->posts} p ON c.comment_post_ID = p.ID
         WHERE p.post_type = 'product'
           AND c.comment_date < %s
           AND c.comment_approved = 1
           AND c.comment_type = ''",
        $date_threshold
    ));

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

2. Регистрация задачи в WP-Cron для автоматического запуска

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

add_action('wpstuff_delete_old_reviews_event', 'wpstuff_delete_old_product_reviews');

3. Очистка планировщика при деактивации плагина или темы

function wpstuff_clear_review_cleanup_schedule() {
    $timestamp = wp_next_scheduled('wpstuff_delete_old_reviews_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpstuff_delete_old_reviews_event');
    }
}
register_deactivation_hook(__FILE__, 'wpstuff_clear_review_cleanup_schedule');

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

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

  • Создайте тестовый отзыв с датой более 365 дней назад (через базу данных или программно).
  • Запустите функцию вручную с помощью wpstuff_delete_old_product_reviews().
  • Проверьте, что старый отзыв удалён из базы данных и не отображается на странице товара.
  • Убедитесь, что задача WP-Cron запланирована и выполняется (можно использовать плагин WP Crontrol для мониторинга).

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

  • Отзывы не удаляются: Проверьте, что комментарии имеют тип '' (обычные комментарии, а не pingback/trackback) и относятся к продуктам (post_type = 'product').
  • WP-Cron не срабатывает: На хостинге может быть отключён WP-Cron. Проверьте наличие системного cron или запустите вручную через WP Crontrol.
  • Удаление отзывов влияет на SEO: Удаляйте только нерелевантные отзывы, не удаляйте все подряд. Можно добавить резервное копирование перед удалением.
  • Функция вызывается слишком часто: Настройте интервал запуска (например, ежедневно), а не при каждом заходе на сайт.

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

  • Перед удалением создавайте резервные копии базы данных.
  • Не используйте слишком короткий срок удаления, чтобы не потерять важные отзывы.
  • Для больших магазинов с тысячами отзывов разбивайте удаление на партии (например, по 100 отзывов за один запуск), чтобы избежать перегрузки.
  • Храните дату удаления в отдельном опциональном параметре, если в будущем планируется восстановление.

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

МетодПреимуществаНедостаткиКогда использовать
WP-Cron с кастомной функциейГибкость, контроль, не требует сторонних плагиновWP-Cron зависит от посещаемости сайта, сложность настройкиСредние и крупные магазины с разработчиками
Плагины для очистки комментариевПростота установки, готовые настройкиМогут быть избыточными, нагрузка, ограничения функционалаМалые магазины, пользователи без навыков кода
Ручное удалениеМаксимальный контрольТрудозатратно, риск ошибитьсяМаленькие магазины с небольшим количеством отзывов
Как создать собственный REST API endpoint в WordPress
02.12.2025
Как отключить автоматическое обновление плагинов WooCommerce без потери безопасности
19.05.2026
Как экспортировать и импортировать настройки WooCommerce с помощью кода
03.05.2026
Как автоматически отключать плагины в WordPress при возникновении ошибок
13.04.2026
Как создать автоматический мультиязычный сайт на WordPress без использования полиглотов
24.01.2026