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

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

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

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

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

  • Откройте браузер в режиме инкогнито и оформите тестовый заказ.
  • Наблюдайте, остались ли товары в корзине после оплаты.
  • Проверьте консоль браузера и логи сервера на предмет ошибок JavaScript и PHP.
  • Проверьте, нет ли конфликтов с плагинами кеширования или оптимизации (например, Clearfy Pro, если установлен).

Причины могут быть следующими:

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

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

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

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

    $order = wc_get_order($order_id);
    if ($order && $order->has_status('completed')) {
        WC()->cart->empty_cart();
    }
}

Этот код очищает корзину, если статус заказа — completed. Для некоторых магазинов стоит дополнительно проверить и processing:

if ($order && in_array($order->get_status(), ['processing', 'completed'])) {
    WC()->cart->empty_cart();
}

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

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

После внедрения:

  • Очистите кеш сайта и браузера.
  • Оформите тестовый заказ под разными статусами (processing, completed).
  • Убедитесь, что после перенаправления на страницу благодарности корзина пуста.
  • Проверьте, что товары не остаются в корзине при повторном заходе на сайт.

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

  • Код не срабатывает из-за неправильного статуса заказа. Проверьте, какие статусы присваиваются вашим заказам, и добавьте их в условие.
  • Конфликты с кешированием. Отключите кеширование страниц корзины и оформления заказа, или используйте исключения в плагинах кеша.
  • Корзина не очищается из-за кеша браузера. Добавьте заголовки, запрещающие кеширование страниц корзины и оплаты.
  • Использование нестандартных плагинов, которые не вызывают хук woocommerce_thankyou. В таком случае попробуйте добавить очистку корзины на другие хуки, например, woocommerce_order_status_completed.

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

  • Не вызывайте очистку корзины слишком рано, чтобы не потерять данные при ошибках в оплате.
  • Проверяйте статус заказа, чтобы очистить корзину только после успешной оплаты.
  • Избегайте дублирования кода очистки, если у вас несколько хуков срабатывают на одно и то же событие.
  • Если используете плагин Clearfy Pro, добавьте исключения для страниц корзины и оформления, чтобы избежать кеширования этих динамических страниц.

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

МетодОписаниеПлюсыМинусы
Хук woocommerce_thankyouОчистка после успешного заказа на странице благодарностиПрост в реализации, работает с большинством платежейНе срабатывает при нестандартных переходах
Хук woocommerce_order_status_completedОчистка при смене статуса заказа на "завершен"Гарантирует очистку после подтверждения оплатыМожет сработать позже, чем нужно
Отключение кеширования страниц корзиныИзбегает проблем с устаревшими данными в корзинеУлучшает корректность данныхСнижает скорость загрузки, требует настройки кеша
Как автоматизировать удалённую очистку базы данных WordPress
20.02.2026
Как создать уникальный фильтрованный список постов в WordPress с помощью WP_Query и AJAX
01.03.2026
WooCommerce: как установить уникальный код для отложенных заказов
30.05.2026
Как создать нетипичный файловый хендлер в WordPress для обработки нестандартных типов файлов
24.03.2026
Как изменить вывод атрибутов в WordPress
18.11.2025