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

|

Проблема: товары остаются в корзине после оплаты

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

Диагностика проблемы

Для проверки поведения корзины после оплаты выполните следующие шаги:

  1. Добавьте товар в корзину и оформите заказ.
  2. Оплатите заказ (используйте тестовый режим платежной системы для проверки).
  3. После успешной оплаты вернитесь на сайт и откройте корзину.
  4. Если товары остались, значит корзина не очищается.

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

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

WooCommerce автоматически очищает корзину после успешного оформления заказа, но иногда из-за нестандартных настроек или плагинов этого не происходит. Чтобы гарантировать очистку, добавим кастомный код в файл functions.php вашей темы или в собственный плагин.

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 && $order->has_status('processing') || $order->has_status('completed')) {
        WC()->cart->empty_cart();
    }
}

Объяснение кода:

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

Если по каким-то причинам корзина не очищается у пользователя сразу, можно принудительно удалить все сессии корзины после оплаты заказа, например, так:

add_action('woocommerce_order_status_completed', 'clear_cart_on_order_complete');
function clear_cart_on_order_complete($order_id) {
    if (is_user_logged_in()) {
        WC()->cart->empty_cart();
    }
}

Проверка результата

После добавления кода:

  1. Очистите кеш сайта и браузера (если используется кеширование).
  2. Повторите процедуру заказа и оплаты в тестовом режиме.
  3. Перейдите на страницу корзины после оплаты — она должна быть пустой.
  4. Для проверки можно использовать инструменты разработчика в браузере, чтобы убедиться, что сессия корзины действительно очищена.

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

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

Сравнение методов очистки корзины

МетодПреимуществаНедостатки
Хук woocommerce_thankyouПростая реализация, срабатывает сразу после заказаМожет не сработать с кастомными платежами
Хук woocommerce_order_status_completedНадежно срабатывает при смене статуса заказаКорзина очищается позже, после смены статуса
Отключение кеширования страницы корзиныИзбегает отображения устаревшей корзиныМожет нагрузить сервер
Как удалить или изменить slug постов WordPress без потери ссылок
07.01.2026
WooCommerce: как автоматически удалять товары из корзины после отмены заказа
17.07.2026
Как сделать автоматический откат изменений при ошибках в WordPress
22.02.2026
WooCommerce: как автоматически отключить отложенные заказы через код
16.06.2026
Создаем настройки плагинов в WordPress с практическими примерами
02.12.2025
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙