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

|

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

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

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

Подключение к хуку смены статуса заказа

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

add_action('woocommerce_thankyou', 'clear_cart_after_payment', 10, 1);
function clear_cart_after_payment($order_id) {
    if (!$order_id) return;
    $order = wc_get_order($order_id);
    if (!$order) return;

    // Проверяем, что заказ оплачен
    if ($order->has_status('processing') || $order->has_status('completed')) {
        WC()->cart->empty_cart();
    }
}

Обработка всех пользователей (авторизованных и гостей)

В WooCommerce корзина привязана к сессии, поэтому при успешной оплате мы можем очистить корзину именно текущего пользователя. Важно убедиться, что корзина очищается только после подтверждения оплаты (статусы заказа: processing или completed).

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

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

add_action('template_redirect', 'clear_cart_on_checkout');
function clear_cart_on_checkout() {
    if (is_checkout() && !is_order_received_page()) {
        WC()->cart->empty_cart();
    }
}

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

Чтобы проверить, что решение работает, выполните следующие шаги:

  1. Добавьте товары в корзину как гость или авторизованный пользователь.
  2. Оформите заказ и оплатите его (можно использовать тестовый режим платежей).
  3. После перехода на страницу «Спасибо за заказ» (thank you page) убедитесь, что корзина пуста.
  4. Попробуйте снова зайти на страницу корзины и убедитесь, что товары отсутствуют.
  5. Если используете кэширование, очистите кэш и проверьте повторно.

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

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

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

МетодОписаниеПреимуществаНедостатки
Хук woocommerce_thankyouОчистка корзины после успешного оформления заказаТочно срабатывает после оплаты, учитывает статус заказаНе очищает корзину, если пользователь не возвращается на страницу благодарности
Очистка при загрузке страницы оформления заказаОчистка корзины при входе на страницу оформленияГарантирует пустую корзину перед новым заказомМожет удалить товары, если пользователь случайно зашел на страницу
Кастомный JavaScriptОчистка корзины с помощью AJAX после оплатыМожно реализовать без перезагрузки страницыЗависит от корректной работы JS, сложнее поддерживать
Как создать подписку на email в WordPress без плагинов: практическое руководство
21.11.2025
Как создать динамические таблицы в WordPress с помощью шорткодов
26.02.2026
Как кастомизировать страницу входа в WordPress: плагины и код
30.03.2026
WooCommerce: как автоматически удалять неактивные и отменённые заказы
23.06.2026
Как отключить Gutenberg и оставить классический редактор в WordPress: практическое руководство
13.01.2026
×
WPShop
партнерка без «но»!

До 3225₽ за каждую продажу

Подключиться к игре