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

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

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

Основная задача — настроить автоматическое удаление таких товаров, чтобы администратор не тратил время на рутину, и чтобы это происходило регулярно, например, по расписанию через WP-Cron.

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

1. Определение порога цены и условий удаления

Для примера возьмём порог в 100 рублей. Все товары с ценой ниже 100 будут удаляться.

2. Создание функции для удаления товаров

Добавьте следующий код в файл functions.php вашей дочерней темы или в отдельный плагин:

function wp_remove_low_price_products() {
    $threshold = 100; // порог цены

    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'fields' => 'ids',
        'meta_query' => array(
            array(
                'key' => '_price',
                'value' => $threshold,
                'compare' => '<',
                'type' => 'NUMERIC'
            )
        ),
        'post_status' => 'publish'
    );

    $query = new WP_Query($args);

    if (!empty($query->posts)) {
        foreach ($query->posts as $product_id) {
            wp_trash_post($product_id); // перемещаем в корзину
        }
    }
}

3. Автоматизация с помощью WP-Cron

Чтобы функция запускалась регулярно, например, ежедневно, добавьте следующий код:

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

add_action('wp_daily_low_price_removal', 'wp_remove_low_price_products');

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

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

Для проверки корректности работы:

  • Создайте тестовый товар с ценой ниже 100 рублей и опубликуйте его.
  • Запустите функцию вручную, вызвав wp_remove_low_price_products() в консоли WP-CLI (команда wp eval 'wp_remove_low_price_products();') или временно вызовите её в functions.php.
  • Проверьте, что товар переместился в корзину (Trash) в админке WooCommerce.
  • Если всё работает, дождитесь автоматического запуска по расписанию и убедитесь, что товары удаляются ежедневно.

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

  • Ошибка: WP-Cron не запускается автоматически. Причина — на сайте низкий трафик или неправильная настройка сервера. Решение — настроить системный cron на сервере для вызова wp-cron.php или использовать плагин для управления cron.
  • Ошибка: товары не удаляются, хотя цена меньше порога. Проверьте, что цена хранится в метаполе _price. Если используется вариативный товар, цена может храниться иначе — тогда нужно модифицировать запрос.
  • Ошибка: функция удаляет не те товары. Проверьте аргументы WP_Query, особенно post_status и post_type. Для вариативных товаров может потребоваться дополнительная логика.

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

  • Используйте wp_trash_post() вместо wp_delete_post(), чтобы иметь возможность восстановить удалённые товары.
  • Если товаров много, подумайте о пакетной обработке — например, обрабатывать по 50 товаров за один запуск, чтобы не перегрузить сервер.
  • Для повышения производительности индексируйте метаполя и оптимизируйте запросы к базе данных.
  • Перед внедрением на рабочем сайте тестируйте на копии — удаление данных необратимо.

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

МетодОписаниеПлюсыМинусы
Код на PHP с WP_Query и WP-CronСамостоятельная реализация удаления товаров по ценеПолный контроль, без сторонних плагиновТребует навыков программирования и тестирования
Плагины для управления удалением товаровГотовые решения с UIПростота использования, настройки через админкуМожет быть избыточно, нагрузка, ограниченная кастомизация
Ручное удаление через админкуУдаление через фильтры товаровПростота, не требует кодаНеавтоматично, затратно по времени
Оптимизация WordPress для маркетинговых сайтов: уменьшение времени загрузки
07.02.2026
Как найти и удалить дубли архивов в WordPress без потери индексации
22.08.2026
Как создать автоматический маркетинговый отслеживатель клиентов в WordPress
13.04.2026
Автоматизация маркетинговых переадресаций в WordPress
29.12.2025
Кастомизация полей оформления заказа WooCommerce без плагинов: пошаговое руководство
17.04.2026