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

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

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

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

1. Добавление фильтра для проверки запаса товаров в корзине

Ниже приведён рабочий пример кода, который проверяет каждый товар в корзине и удаляет его, если запас равен нулю. Код нужно добавить в файл functions.php вашей темы или в отдельный плагин.

add_action('woocommerce_check_cart_items', 'remove_out_of_stock_items_from_cart');
function remove_out_of_stock_items_from_cart() {
    $cart = WC()->cart;
    $items_to_remove = [];
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        $product = $cart_item['data'];
        if ( ! $product->is_in_stock() ) {
            $items_to_remove[] = $cart_item_key;
        }
    }
    foreach ( $items_to_remove as $cart_item_key ) {
        $cart->remove_cart_item( $cart_item_key );
    }
    if ( ! empty( $items_to_remove ) ) {
        wc_add_notice( 'Из корзины удалены товары, которых нет в наличии.', 'notice' );
    }
}

2. Проверка работы кода на сайте

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

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

  • Добавьте в корзину товар с запасом 1–5 штук.
  • В админке уменьшите запас товара до 0.
  • Обновите страницу корзины в браузере.
  • Товар должен исчезнуть из корзины автоматически.
  • Появится уведомление о удалении недоступных товаров.

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

  • Код не срабатывает: Убедитесь, что WooCommerce активен и корзина инициирована (WC()->cart не равна null).
  • Товары не удаляются: Проверьте, что функция is_in_stock() корректно отражает состояние запасов. Если используется сторонний плагин управления запасами, метод может работать иначе.
  • Уведомление не отображается: Проверьте, что шаблоны WooCommerce корректно выводят системные уведомления (wc_print_notices() вызывается в корзине).
  • Производительность: Для больших корзин используйте кэширование или оптимизацию, чтобы не нагружать сервер.

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

  • Не используйте код в functions.php напрямую на продакшн-сайте без тестирования в staging-среде.
  • Добавляйте проверку nonce и права пользователя, если модифицируете корзину по AJAX.
  • Для сайтов с большим количеством товаров и пользователей рассмотрите внедрение AJAX-очистки корзины по таймеру, чтобы избежать лишних запросов.
  • При использовании сторонних плагинов управления запасами убедитесь в совместимости с функцией is_in_stock().

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

ВариантПреимуществаНедостатки
Код в functions.php Полный контроль, бесплатно, без зависимостей Требует навыков, возможны ошибки при обновлениях
Плагин очистки корзины Простота установки, готовый функционал Может быть избыточным, замедляет сайт, зависит от стороннего разработчика
Комбинация с WP-Cron Автоматическое регулярное очищение, не зависит от действий пользователя Сложнее в реализации, возможны задержки удаления
Как создать динамические формы в WordPress с помощью AJAX
18.03.2026
Как отключить автозагрузку изображений в WordPress для ускорения сайта
17.04.2026
Как создать автоматический импорт из CSV в WordPress с помощью кода
25.12.2025
Как добавить автоматическое удаление неликвидных постов в WordPress
01.02.2026
WooCommerce: как изменять стоимость товаров в корзине по условию
07.05.2026

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.