Как автоматически удалять старые отзывы в WooCommerce

В чем заключается задача удаления старых отзывов в WooCommerce

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

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

Если вы заметили, что в разделе с отзывами много старых сообщений (например, старше 2 лет), которые не несут пользы, а лишь загромождают интерфейс и снижают доверие покупателей, стоит рассмотреть автоматическое удаление. Ручное удаление отзывов в большом объеме — непрактично и занимает много времени.

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

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

function delete_old_woocommerce_reviews() {
    // Период в днях, после которого отзывы считаются устаревшими
    $days = 365 * 2; // 2 года
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    global $wpdb;
    // Получаем ID комментариев (отзывов), дата которых меньше порога и тип 'review'
    $reviews_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($reviews_to_delete)) {
        foreach ($reviews_to_delete as $comment_id) {
            wp_delete_comment($comment_id, true); // true - навсегда
        }
    }
}

2. Добавляем задачу в планировщик WP-Cron для регулярного удаления

// Регистрируем событие при активации темы или плагина
function schedule_old_reviews_deletion() {
    if (!wp_next_scheduled('delete_old_reviews_daily_event')) {
        wp_schedule_event(time(), 'daily', 'delete_old_reviews_daily_event');
    }
}
add_action('wp', 'schedule_old_reviews_deletion');

// Привязываем нашу функцию к событию
add_action('delete_old_reviews_daily_event', 'delete_old_woocommerce_reviews');

// Для отмены расписания при деактивации
function unschedule_old_reviews_deletion() {
    $timestamp = wp_next_scheduled('delete_old_reviews_daily_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'delete_old_reviews_daily_event');
    }
}

3. Ручной запуск для тестирования

Для проверки можно временно вызвать функцию напрямую, например, в functions.php или через плагин Code Snippets:

delete_old_woocommerce_reviews();

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

  • Зайдите в админку WordPress → Комментарии → Отзывы.
  • Отфильтруйте отзывы по дате, чтобы убедиться, что отзывы старше 2 лет отсутствуют.
  • В базе данных (через phpMyAdmin) выполните запрос SELECT COUNT(*) FROM wp_comments WHERE comment_type = 'review' AND comment_date < 'YYYY-MM-DD' для даты порога.
  • При ручном запуске функции убедитесь, что отзывы удаляются немедленно.

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

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

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

  • Для больших баз данных лучше не удалять все отзывы за один проход, а разбивать удаление на части (например, по 100 отзывов за раз), чтобы избежать таймаутов.
  • Добавьте логирование удалений в файл, чтобы отслеживать, когда и какие отзывы удаляются.
  • Для надежности создайте резервную копию базы перед внедрением автоматического удаления.
  • Если у вас есть плагин Clearfy Pro с https://wpshop.ru/plugins/clearfy?source=wptemy.ru&medium=article&campaign=kak-avtomaticheski-udalit-starye-otzyvy-woocommerce, можно использовать его инструменты для оптимизации базы данных и дополнительно контролировать отзывы.

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

МетодПлюсыМинусы
Ручное удаление через админкуПростота, контрольТрудоемко, не подходит для большого объема
Код с WP-Cron (предложенный способ)Автоматизация, гибкость, без сторонних плагиновТребует базовых навыков разработки, возможно нужно тестировать производительность
Плагины для очистки базыУдобство, дополнительные функцииЗависимость от сторонних решений, возможны конфликты
Как оптимизировать загрузку шаблонов WordPress
17.03.2026
Как удалить пустые категории в WordPress
02.03.2026
Как удалить верстку пустых блоков в WordPress: практическое руководство
14.03.2026
Как использовать хуки для отрывных настроек в WordPress
05.01.2026
Как создать управляемую форму обратной связи в WordPress без плагинов
02.04.2026