Как удалить popup после успешного отправленного заказа в WooCommerce без перезагрузки страницы

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

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

Основные причины проблемы:

  • Отсутствует JavaScript-событие, которое отслеживает успешную отправку заказа.
  • Popup не интегрирован с событиями WooCommerce AJAX.
  • Страница не перезагружается, и код закрытия popup не вызывается.

Пошаговое решение: закрытие popup по событию успешного заказа WooCommerce

1. Использование WooCommerce JS-события checkout_order_processed

WooCommerce генерирует событие checkout_order_processed после успешной обработки заказа через AJAX. Можно подписаться на это событие и закрывать popup.

jQuery( function($) {
    $( document.body ).on( 'checkout_order_processed', function() {
        // Закрываем popup, например, вызываем метод библиотеки popup
        if ( typeof MyPopup !== 'undefined' ) {
            MyPopup.close();
        }
        // Или закрываем элемент вручную
        $('#my-popup').fadeOut();
    });
});

2. Если используется кастомная форма с AJAX

Если заказ отправляется с помощью кастомного AJAX-запроса, нужно добавить обработчик на успешный ответ сервера, например:

jQuery.ajax({
    url: wc_checkout_params.ajax_url,
    type: 'POST',
    data: formData,
    success: function(response) {
        if ( response.result === 'success' ) {
            $('#my-popup').fadeOut();
        }
    }
});

3. Закрытие popup при переходе на страницу благодарности

Если после оформления заказа происходит перенаправление на страницу благодарности, можно добавить скрипт, который при загрузке этой страницы скроет popup:

jQuery(document).ready(function($) {
    if ( $('body').hasClass('woocommerce-order-received') ) {
        $('#my-popup').hide();
    }
});

Как проверить, что решение сработало

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

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

  • Popup не закрывается, так как событие не срабатывает. Проверьте, что вы подписаны именно на событие checkout_order_processed, а не на updated_checkout.
  • Скрипт не работает из-за неправильно указанного селектора popup. Убедитесь, что #my-popup совпадает с ID вашего popup в DOM.
  • JavaScript конфликтует с другими плагинами. Проверьте консоль браузера, отключите временно другие скрипты и протестируйте повторно.
  • Заказ не отправляется через AJAX. В этом случае нужно использовать проверку загрузки страницы благодарности, а не событие JS.

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

  • Не встраивайте логику закрытия popup напрямую в глобальный scope. Используйте анонимные функции и проверяйте существование объектов.
  • Минимизируйте количество DOM-операций при закрытии popup, используйте классы вместо инлайновых стилей для скрытия.
  • Если используете сторонние библиотеки popup, читайте их документацию для правильного вызова метода закрытия.
  • Обрабатывайте ошибки AJAX-запросов, чтобы избежать зависаний popup при сбоях.

Сравнение подходов закрытия popup после успешного заказа

МетодКогда использоватьПреимуществаНедостатки
Событие checkout_order_processedAJAX-оформление заказа по умолчаниюРаботает без перезагрузки страницы, нативный WooCommerceТолько при AJAX, требует стандартного оформления
Обработка кастомного AJAXСобственные формы и скриптыГибкость для любых сценариевТребует ручной настройки и отладки
Проверка страницы благодарностиОбычное оформление с перезагрузкойПростая реализацияPopup не закрывается без перезагрузки
Как удалить popup при переходе на другую страницу в WordPress без перезагрузки
23.04.2026
Как удалить всплывающее окно после закрытия в WordPress
07.12.2025
Как создать popup с отключением по рефереру в WordPress
26.03.2026
Как использовать popup для подтверждения действий в WooCommerce
21.06.2026
Как удалить popup при использовании кэширования в WordPress
16.06.2026