Автоматическое удаление товара в WooCommerce после отрицательной оценки

|

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

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

Диагностика сценария

Для начала нужно понять, как именно WooCommerce хранит отзывы и оценки товаров. Отзывы — это комментарии с метаданными по оценке (звезды). Средний рейтинг товара рассчитывается динамически.

Пошаговое решение: удаление товара при среднем рейтинге ниже порога

Реализуем проверку рейтинга и удаление товара с помощью планировщика WP-Cron. Такой подход позволит регулярно сканировать товары и удалять те, что не соответствуют критериям.

1. Создаем функцию для проверки и удаления

function yelly_remove_low_rated_products() {
    $threshold = 2.5; // Пороговое значение рейтинга
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
    );
    $products = get_posts($args);

    foreach ($products as $product_post) {
        $product = wc_get_product($product_post->ID);
        if (!$product) continue;

        $avg_rating = floatval($product->get_average_rating());
        if ($avg_rating > 0 && $avg_rating < $threshold) {
            // Удаляем товар навсегда
            wp_delete_post($product->get_id(), true);
        }
    }
}

2. Добавляем событие в WP-Cron

function yelly_schedule_low_rating_check() {
    if (!wp_next_scheduled('yelly_check_low_rating_hook')) {
        wp_schedule_event(time(), 'daily', 'yelly_check_low_rating_hook');
    }
}
add_action('wp', 'yelly_schedule_low_rating_check');
add_action('yelly_check_low_rating_hook', 'yelly_remove_low_rated_products');

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

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

Проверка результата

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

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

$args['posts_per_page'] = 50;
$args['paged'] = $paged; // реализуйте пагинацию

Сравнение вариантов реализации

МетодПлюсыМинусы
Плагин для модерации отзывовГотовое решение, UI для управленияМожет быть тяжелым, платным
Код через WP-Cron (наш вариант)Легкий, кастомный, интегрируемыйТребует знаний, настройка cron
Ручная проверка и удалениеПолный контрольЗатратно по времени
Как создать автоматические уведомления в WordPress с помощью WPRemark
16.04.2026
Как создать динамическую картинку из текста в WordPress с примерами кода
25.02.2026
Как использовать Yelly для создания уникальных карт в WordPress
31.03.2026
Как отложить обновление тем и плагинов в WordPress: практические решения
15.02.2026
Как создать собственный виджет в WordPress: практические примеры и советы
23.11.2025
×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙