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

|

В чем проблема с оформлением заказа при отсутствии товара на складе?

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

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

Первый шаг — проверить, есть ли в корзине товары с недоступным запасом. Для этого можно использовать WooCommerce функцию WC()->cart->get_cart() и для каждого элемента корзины проверить значение $product->get_stock_quantity() и $product->is_in_stock().

function cart_has_out_of_stock_items() {
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];
        if ( ! $product->is_in_stock() || $product->get_stock_quantity() <= 0 ) {
            return true;
        }
    }
    return false;
}

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

1. Подключаем редирект на странице оформления заказа

Используем хук template_redirect для проверки состояния корзины и перенаправления.

add_action('template_redirect', 'redirect_if_out_of_stock_in_cart');
function redirect_if_out_of_stock_in_cart() {
    if ( is_checkout() && ! is_wc_endpoint_url() && WC()->cart ) {
        if ( cart_has_out_of_stock_items() ) {
            wp_safe_redirect( wc_get_page_permalink( 'shop' ) );
            exit;
        }
    }
}

2. Создаем пользовательское уведомление

Чтобы пользователь понимал причину редиректа, добавим уведомление на страницу магазина через сессионное сообщение WooCommerce.

add_action('wp_loaded', 'add_out_of_stock_notice');
function add_out_of_stock_notice() {
    if ( isset($_GET['out_of_stock_redirect']) ) {
        wc_add_notice('В корзине есть товары, которые отсутствуют на складе. Пожалуйста, удалите их перед оформлением заказа.', 'error');
    }
}

Изменим редирект с добавлением параметра:

wp_safe_redirect( wc_get_page_permalink( 'shop' ) . '?out_of_stock_redirect=1' );

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

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

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

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

МетодПреимуществаНедостатки
Редирект с помощью template_redirect и проверки наличияПростой, не требует сторонних плагинов, гибкийНужно вручную настраивать уведомления и проверять все сценарии
Использование плагинов для управления наличием товаров в корзинеЧасто имеют дополнительные функции уведомлений и блокировокМогут влиять на производительность, требуют поддержки
Модификация шаблонов оформления заказаТочное управление отображением и логикойТребует знаний PHP и WooCommerce, сложнее в поддержке
Автоматическое создание менеджера проектов в WordPress: практическое руководство с кодом
26.03.2026
Как автоматизировать удаление неактивных пользователей в WordPress
18.05.2026
Автоматическое создание и удаление черновиков в WordPress через CRON
22.01.2026
Автоматический редирект с WooCommerce страницы оформления заказа при отсутствии товара на складе
18.04.2026
Как автоматизировать создание и обновление календаря мероприятий в WordPress
12.03.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше