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

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

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

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

1. Определяем порог минимального запаса

Для начала решите, какой запас считать минимальным. Например, 1 или 0.

2. Создаем функцию для удаления товаров с запасом ниже порога

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

function wpelement_delete_low_stock_products() {
    $threshold = 1; // Порог минимального запаса

    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'meta_query' => [
            [
                'key' => '_stock',
                'value' => $threshold,
                'compare' => '<',
                'type' => 'NUMERIC'
            ]
        ],
        'fields' => 'ids',
        'post_status' => 'publish',
    ];

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        foreach ($query->posts as $product_id) {
            wp_trash_post($product_id); // Отправляем товар в корзину
            // Если нужно удалить навсегда, использовать wp_delete_post($product_id, true);
        }
    }

    wp_reset_postdata();
}

3. Запускаем функцию по расписанию (WP-Cron)

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

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

// Хук для выполнения очистки
add_action('wpelement_daily_low_stock_cleanup', 'wpelement_delete_low_stock_products');

// Очистка расписания при деактивации
function wpelement_clear_low_stock_cleanup_schedule() {
    $timestamp = wp_next_scheduled('wpelement_daily_low_stock_cleanup');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpelement_daily_low_stock_cleanup');
    }
}
// Добавьте вызов этой функции при деактивации плагина или темы

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

  • Перейдите в админку WooCommerce → Товары и проверьте наличие товаров с запасом ниже порога.
  • Запустите функцию вручную (через wp shell или временно вызвав функцию) и убедитесь, что товары переносятся в корзину.
  • Проверьте логи сервера на наличие ошибок при выполнении WP-Cron.

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

  • Товары не удаляются: Проверьте, включен ли WP-Cron, и работает ли расписание. Для диагностики можно использовать плагин WP Crontrol.
  • Функция не находит товары: Убедитесь, что мета-поле _stock существует и содержит числовые значения. Если используется управление запасами плагином, проверьте, совпадают ли ключи мета-полей.
  • Удаление товаров происходит слишком часто или никогда: Проверьте правильность регистрации и отмены расписания, а также временные зоны сервера.

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

  • Перед удалением товаров лучше отправлять их в корзину с помощью wp_trash_post(), чтобы избежать потери данных.
  • Если товаров много, разбивайте обработку на порции, чтобы избежать таймаутов. Например, обрабатывать по 50 товаров за раз с помощью параметра posts_per_page.
  • Добавьте логирование удалений для аудита, записывая ID удаленных товаров в отдельный лог-файл.
  • Используйте плагин Clearfy Pro для оптимизации WooCommerce и управления фоновой очисткой сайта (https://wpshop.ru/plugins/clearfy?source=wpelement.ru&medium=article&campaign=woocommerce-udaleniye-tovarov-po-nizkomu-zapasu).

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

МетодПреимуществаНедостатки
Удаление через WP-Cron и кодПолный контроль, без плагинов, гибкая настройкаТребует навыков, возможны ошибки расписания
Плагины управления запасамиПростота настройки, визуальный интерфейсНагрузка на сайт, ограниченная кастомизация
Ручное удалениеПростой контрольТрудоемко, не подходит для больших магазинов
Как автоматически удалять товары из WooCommerce при низком запасе
02.06.2026
Как удалить пустые категории в WordPress
12.03.2026
Как удалить неактивных пользователей в WordPress: эффективные методы и примеры
19.11.2025
Как удалить записи по мета-полю в WordPress
09.12.2025
Как решить проблемы с кэшированием в WordPress
15.11.2025