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

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

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

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

1. Проверка стандартного поведения WooCommerce

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

2. Добавление кода для очистки корзины после успешного завершения заказа

В файле functions.php вашей дочерней темы или в кастомном плагине добавьте следующий код:

add_action('woocommerce_thankyou', 'wp8_clear_cart_after_payment', 10, 1);
function wp8_clear_cart_after_payment($order_id) {
    if (!$order_id) {
        return;
    }

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

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

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

3. Учет кеширования и сессий

Если на сайте включено кеширование (например, через плагин WP Rocket, LiteSpeed Cache или серверное кеширование), убедитесь, что страницы корзины и «Спасибо за заказ» исключены из кеша. Иначе пользователь будет видеть устаревшую корзину.

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

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

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

  • Ошибка: Очистка корзины не происходит при статусе заказа on-hold или другие.
    Решение: Добавьте нужные статусы в массив проверяемых в коде.
  • Ошибка: Кеширование страницы корзины мешает обновлению.
    Решение: Отключите кеширование для корзины и страницы благодарности в настройках плагина кеширования.
  • Ошибка: Плагин безопасности или сессий конфликтует с функцией очистки.
    Решение: Проверьте логи плагинов и попробуйте временно отключить их для теста.

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

  • Не вызывайте empty_cart() без проверки статуса заказа — это может привести к удалению товаров при неполной оплате.
  • Если используете кастомные платежные шлюзы, интегрируйте вызов очистки корзины в хуки подтверждения платежа.
  • Исключите страницы корзины и оформления заказа из кеширования для корректного отображения данных.
  • Для оптимизации можно использовать Ajax-очистку корзины на клиенте после успешного платежа, но это усложняет логику и требует дополнительной отладки.

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

МетодПреимуществаНедостатки
Хук woocommerce_thankyou с empty_cart()Просто реализовать, работает на стандартных статусах заказаЗависит от правильных статусов и кеширования
Очистка через Ajax на стороне клиентаМгновенный UX эффект, подходит для SPAСложнее в реализации, требует безопасности и отладки
Отключение кеширования страниц корзиныОбеспечивает актуальность корзиныМожет снизить производительность сайта
Как отключить XML-RPC в WordPress и не сломать нужные интеграции
02.10.2026
Как создать собственный шорткод в WordPress с примером кода
09.09.2026
Как установить ограничение на число запросов к REST API WordPress
08.09.2026
Оптимизация отображения контента для разных пользователей в WordPress
08.09.2026
Как удалить неиспользуемые метаданные в WordPress для оптимизации базы данных
08.09.2026
×
-15%
на премиум-тему
Bono

Создай магазин мечты
на WordPress!

↓ ↓ ↓ ↓ ↓
Купить со скидкой »