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

|

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

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

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

Причины, по которым корзина не очищается автоматически

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

1. Использование стандартного хука WooCommerce для очистки корзины

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

add_action('woocommerce_thankyou', 'custom_clear_cart_after_payment');
function custom_clear_cart_after_payment($order_id) {
    if (!$order_id) return;

    $order = wc_get_order($order_id);
    if (!$order) return;

    // Проверяем статус заказа
    if ($order->get_status() === 'completed' || $order->get_status() === 'processing') {
        WC()->cart->empty_cart();
    }
}

Этот код очищает корзину, когда заказ находится в статусе completed или processing. В зависимости от сценария можно расширить список статусов.

2. Обработка нестандартных платежных шлюзов

Если используется кастомный шлюз, убедитесь, что он меняет статус заказа корректно и вызывает хук woocommerce_thankyou. Если нет, добавьте вызов вручную или используйте хук, который сигнализирует о успешной оплате.

3. Отключение кэширования для страниц корзины и оформления заказа

Кэширование может мешать обновлению корзины. Проверьте настройки кэш-плагинов и исключите из кэширования страницы /cart/ и /checkout/. Например, для плагина WP Super Cache добавьте эти URL в исключения.

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

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

1. Функция очистки корзины не вызывается

Причина: кастомный платежный шлюз не вызывает хук woocommerce_thankyou. Проверьте документацию шлюза и добавьте вызов вручную после успешной оплаты.

2. Корзина очищается слишком рано

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

3. Кэш мешает обновлению корзины

Решение: отключите кэширование для страниц корзины и оформления заказа.

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

Сравнение способов очистки корзины

МетодПлюсыМинусы
Хук woocommerce_thankyou с проверкой статусаПростота, стандартный подход, совместимостьЗависит от корректной работы платежного шлюза
Принудительный вызов очистки в кастомном шлюзеГарантирует очистку для нестандартных решенийТребует ручного вмешательства и поддержки
Отключение кэшированияОбеспечивает корректное отображение корзиныМожет повлиять на производительность сайта
Как кастомизировать страницу входа в WordPress: плагины и код
30.03.2026
Как удалить или изменить slug постов WordPress без потери ссылок
07.01.2026
Как сделать автоматический откат изменений при ошибках в WordPress
22.02.2026
WooCommerce: как автоматически удалять отменённые и неактивные заказы
08.07.2026
Как добавить поддержку WebP в WordPress без плагинов
24.12.2025
×
-15%
на премиум плагин
Clearfy

Защитите сайт!

Включить Clearfy »