Автоматическое удаление старых отзывов WooCommerce с помощью WP-Cron

|

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

В интернет-магазинах на WooCommerce отзывы играют ключевую роль для повышения доверия покупателей. Однако со временем накапливаются устаревшие или нерелевантные отзывы, например, с багами или по товарам, которых давно нет в продаже. Это может негативно повлиять на восприятие магазина и SEO. Ручное удаление требует много времени. Практическое решение — настроить автоматическое удаление отзывов старше определённого срока с помощью WP-Cron.

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

1. Определяем критерии удаления

В нашем примере удаляем отзывы старше 365 дней (1 год). Можно изменить этот параметр под свои нужды.

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

function delete_old_woocommerce_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
         INNER JOIN {$wpdb->posts} p ON c.comment_post_ID = p.ID
         WHERE c.comment_date < %s
         AND p.post_type = 'product'
         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); // true — без возможности восстановления
        }
    }
}

3. Регистрируем задачу WP-Cron

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

add_action('delete_old_reviews_daily_event', 'delete_old_woocommerce_reviews');

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

4. Отмена задачи при деактивации плагина или темы

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

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

Частые ошибки и способы исправления

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

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

МетодОписаниеПлюсыМинусы
Плагин (например, WP Bulk Delete)Использование готового решения для удаления отзывов по критериямПростота настройки, UI для управленияМожет быть избыточным, нагрузка при больших объёмах
WP-Cron с кастомным кодомАвтоматизация через собственный код, максимальный контрольГибкость, минимальная нагрузка при правильной настройкеТребует навыков разработки
SQL-запросы напрямуюУдаление отзывов через прямой запрос к базеОчень быстро, можно делать любые выборкиРиск повредить данные, отсутствие логики WordPress
Как создать автоматические уведомления о проблемах с WooCommerce
03.01.2026
Как автоматизировать создание списка клиентов в WordPress с примерами кода
09.03.2026
Как использовать мета-заголовки для улучшения SEO в WooCommerce
24.05.2026
Как отключить AJAX-загрузку товаров в WooCommerce для улучшения совместимости
01.06.2026
Как настроить отложенный запуск задач в WordPress для бизнес-сайтов
26.12.2025
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙