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Надежно срабатывает при смене статуса заказаКорзина очищается позже, после смены статуса
Отключение кеширования страницы корзиныИзбегает отображения устаревшей корзиныМожет нагрузить сервер
Как автоматически добавлять внутренние ссылки в постах WordPress
02.04.2026
Установка и настройка WPRemark для автоматического комментирования в WordPress
03.02.2026
WooCommerce: как ограничить оформление заказа только для зарегистрированных пользователей
27.05.2026
WooCommerce: как автоматически удалять заказы по определённому статусу
24.05.2026
WooCommerce: как автоматически удалять товары из корзины после оплаты
11.05.2026
×

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

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

пишет статьи

готовит SEO

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

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