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

|

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

В WooCommerce для интернет-магазинов негативные отзывы могут существенно повлиять на репутацию и продажи. В некоторых случаях владельцам магазинов нужно автоматизировать процесс удаления товаров с низким рейтингом, чтобы оперативно управлять ассортиментом и поддерживать качество каталога. Задача — автоматически удалять товар, если его средняя оценка опускается ниже определённого порога (например, 2 звезды).

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

1. Определяем событие изменения рейтинга

WooCommerce хранит отзывы и оценки как комментарии с метаданными. Чтобы отследить обновление рейтинга, можно использовать хук comment_post и edit_comment, которые вызываются при добавлении или редактировании отзыва.

2. Вычисляем средний рейтинг товара

При каждом новом или обновлённом отзыве нужно пересчитать среднюю оценку товара. Для этого получаем все рейтинги, связанные с товаром, и вычисляем среднее значение.

function get_product_average_rating( $product_id ) {
    $args = [
        'post_id' => $product_id,
        'status'  => 'approve',
        'meta_key' => 'rating'
    ];
    $comments = get_comments( $args );
    if ( empty( $comments ) ) {
        return 0;
    }
    $total = 0;
    $count = 0;
    foreach ( $comments as $comment ) {
        $rating = intval( get_comment_meta( $comment->comment_ID, 'rating', true ) );
        if ( $rating > 0 ) {
            $total += $rating;
            $count++;
        }
    }
    return ($count === 0) ? 0 : round( $total / $count, 2 );
}

3. Удаляем товар при низком рейтинге

Если средний рейтинг ниже порога (например, 2), удаляем товар программно с помощью функции wp_trash_post. В WooCommerce товар — это тип записи product.

function auto_delete_product_on_low_rating( $comment_id, $comment_approved ) {
    if ( 1 !== $comment_approved ) {
        return; // Игнорируем не одобренные комментарии
    }
    $comment = get_comment( $comment_id );
    $product_id = $comment->comment_post_ID;
    $average_rating = get_product_average_rating( $product_id );
    if ( $average_rating > 0 && $average_rating < 2 ) { // Порог 2 звезды
        wp_trash_post( $product_id );
    }
}
add_action( 'comment_post', 'auto_delete_product_on_low_rating', 10, 2 );
add_action( 'edit_comment', function( $comment_id ) {
    $comment = get_comment( $comment_id );
    if ( $comment ) {
        auto_delete_product_on_low_rating( $comment_id, 1 );
    }
} );

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

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

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

Сравнение подходов для автоматического удаления товара

МетодПлюсыМинусыПример кода
Хуки комментариев (comment_post, edit_comment) Реагирует на добавление и изменение отзывов моментально Зависит от стандартного механизма комментариев Пример из статьи
Крон-задача с периодической проверкой рейтинга Не зависит от событий, подходит для сложных вычислений Задержка реакции, сложнее в настройке WP-Cron с пользовательской функцией
Использование плагина-автоматизатора Простота настройки, готовый функционал Может быть избыточным, нагрузка от плагина Плагины типа AutomateWoo
Как массово удалить неиспользуемые вариации товаров в WooCommerce
02.06.2026
Как создать уникальные системы оценок в WordPress: примеры и решения
28.03.2026
Как создать отзывы с экспертной оценкой в WordPress: практические примеры и плагины
27.01.2026
Как заблокировать доступ к файлам в медиабиблиотеке WordPress через .htaccess
15.05.2026
Как автоматически удалять неактивных пользователей в WordPress
09.06.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее