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

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

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

Чтобы диагностировать проблему, выполните следующие действия:

  • Отключите все сторонние плагины, кроме WooCommerce, и проверьте поведение корзины после оплаты.
  • Очистите кэш сайта и браузера.
  • Проверьте, не используется ли кэширование страниц (например, через плагин WP Super Cache, LiteSpeed Cache или серверное кэширование).
  • Проверьте, вызывается ли стандартное действие очистки корзины после успешного оформления заказа.

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

1. Использование хука для очистки корзины после успешного заказа

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

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) {
        return;
    }
    // Проверяем статус заказа
    if ($order->get_status() === 'processing' || $order->get_status() === 'completed') {
        WC()->cart->empty_cart();
    }
}

Данный код срабатывает на странице благодарности после успешного заказа и очищает корзину, если заказ в статусе processing или completed.

2. Предотвращение повторного добавления товаров в корзину

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

function disable_cache_for_cart_checkout() {
    if (is_cart() || is_checkout()) {
        nocache_headers();
    }
}
add_action('template_redirect', 'disable_cache_for_cart_checkout');

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

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

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

  • Ошибка: Корзина не очищается, несмотря на добавление кода.
    Причина: Кэширование страниц или плагинов.
    Решение: Отключите кэширование на страницах корзины и оформления заказа, используйте тег nocache_headers() в шаблоне.
  • Ошибка: Ошибка PHP или белый экран после добавления кода.
    Причина: Синтаксическая ошибка при вставке кода.
    Решение: Проверьте код на ошибки, используйте IDE или плагин для проверки синтаксиса.
  • Ошибка: Корзина очищается слишком рано или не в нужный момент.
    Причина: Хук может сработать до полной обработки заказа.
    Решение: Используйте хук woocommerce_thankyou, который вызывается после успешного завершения заказа.

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

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

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

МетодПлюсыМинусы
Стандартный механизм WooCommerceВстроено, не требует кодаМожет не сработать из-за плагинов или кэша
Хук woocommerce_thankyou с empty_cart()Контроль, надежностьНужно добавлять код, требует тестирования
Отключение кэширования на страницах корзины и оформленияУстраняет проблему с кешемМожет снизить производительность сайта
WordPress: как создать шорткод с атрибутами и выводом данных
10.11.2025
Автоматический экспорт постов в XML в WordPress: практическое руководство
31.12.2025
WordPress: как создать плагин для авторизации по телефонному номеру
23.12.2025
WooCommerce: как избавиться от проблемы повторных заказов после успешной оплаты
26.04.2026
Автоматическое отключение плагинов по расписанию в WordPress
06.03.2026