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

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

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

  • кеширования страниц корзины и корзина не обновляется;
  • конфликтов с плагинами кеширования или безопасности;
  • неправильной работы сессий пользователя;
  • клиент использует несколько вкладок браузера с корзиной.

Для проверки проблемы:

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

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

Лучший способ гарантировать очистку корзины после оплаты — использовать хук 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;

    // Получаем ID пользователя
    $user_id = $order->get_user_id();

    // Если пользователь авторизован, очищаем корзину через объект WC_Cart
    if ($user_id) {
        WC()->cart->empty_cart();
    } else {
        // Для гостей очищаем сессию
        WC()->session->destroy_session();
    }
}

Код помещается в файл functions.php вашей дочерней темы или в отдельный плагин.

Почему именно woocommerce_thankyou?

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

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

  1. Добавьте код в functions.php.
  2. Оформите тестовый заказ на сайте.
  3. После оплаты перейдите в корзину.
  4. Корзина должна быть пустой.
  5. Проверьте работу на разных браузерах и в инкогнито режиме, чтобы исключить кеш.

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

  • Корзина не очищается у гостей: проверьте, что сессии WooCommerce работают корректно, и нет конфликтов с плагинами кеширования.
  • Кеширование страниц корзины: отключите кеширование для страниц корзины, оформления заказа и благодарности, иначе изменения не увидите.
  • Код вставлен в неподходящее место: убедитесь, что код в functions.php активной темы или полноценном плагине.
  • Использование сторонних плагинов корзины: они могут иметь собственные методы работы с корзиной, в этом случае код может не сработать.

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

  • Не используйте тяжелые операции внутри хука woocommerce_thankyou, чтобы не замедлять загрузку страницы благодарности.
  • Обязательно тестируйте на staging-сервере, чтобы избежать сбоев на живом сайте.
  • Если у вас много трафика и пользователи часто используют кеш, настройте исключения кеша для корзины и страниц оформления заказа.

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

МетодОписаниеПреимуществаНедостатки
Хук woocommerce_thankyouОчистка корзины после оплаты программноГарантированное срабатывание, работает для авторизованных и гостейТребует отключения кеша на страницах корзины
Очистка через JavaScript на странице благодарностиУдаление товаров из корзины через JS после загрузкиПростая реализацияЗависит от клиента, может не сработать при отключенном JS
Отключение кеширования страниц корзины и оформления заказаМетод предотвращения проблем с кешемОбеспечивает актуальность корзиныМожет увеличить нагрузку на сервер
WooCommerce: как отключить регистрацию при оформлении заказа
08.07.2026
Как автоматизировать обновление контента в WordPress с помощью WPRemark
25.01.2026
Как закрыть доступ к административной панели WordPress для посторонних
15.12.2025
WooCommerce: как добавить дополнительное поле в форму оформления заказа и сохранить данные
21.07.2026
Как удалить пустые категории в WordPress
07.01.2026