WooCommerce: как правильно отключить AJAX в форме оплаты

Диагностика проблемы: зачем отключать AJAX в форме оплаты WooCommerce

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

Типичные симптомы проблемы:

  • Форма оплаты не отправляется, кнопка "Оформить заказ" не реагирует;
  • Появляются ошибки JavaScript в консоли браузера при попытке оформить заказ;
  • Страница заказа зависает или обновляется без отправки данных;
  • Конфликты с дополнительными кастомными полями или плагинами, которые не поддерживают AJAX-запросы.

Как проверить, что AJAX в форме оплаты вызывает проблему

Для диагностики:

  1. Откройте консоль разработчика браузера (F12) и перейдите на страницу оформления заказа;
  2. Попробуйте оформить заказ — если в консоли появляются ошибки JavaScript, связанные с ajax или wc-checkout, это повод продолжать диагностику;
  3. Временно отключите все плагины, кроме WooCommerce, и переключитесь на стандартную тему (Storefront или Twenty Twenty-Three). Если проблема пропала, значит конфликт либо с плагинами, либо темой;
  4. Чтобы проверить, влияет ли AJAX, временно отключите его, см. следующий раздел.

Пошаговое решение: отключение AJAX в форме оплаты WooCommerce

WooCommerce не предоставляет простой переключатель для отключения AJAX в форме оплаты, но можно добиться эффекта через фильтры и скрипты.

Шаг 1. Отключаем AJAX обновления корзины и формы оплаты с помощью фильтра

add_filter('woocommerce_checkout_update_order_review_fragment', '__return_false');

Этот фильтр предотвращает обновление фрагментов корзины через AJAX. Однако для полной остановки AJAX потребуется дополнить скрипт.

Шаг 2. Удаляем событие отправки формы через AJAX

Для этого добавьте следующий JavaScript в файл вашей темы или через wp_footer:

jQuery(function($){
    $('form.checkout').off('submit');
});

Этот код отключит обработчик отправки формы WooCommerce через AJAX.

Шаг 3. Принудительно отправляем форму традиционным методом

Для этого в functions.php темы добавьте:

function disable_woocommerce_checkout_ajax() {
    wp_dequeue_script('wc-checkout');
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_checkout_ajax', 20);

Скрипт wc-checkout отвечает за AJAX-обработку формы — отключив его, вы переходите к классической отправке формы с перезагрузкой страницы.

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

После внесения изменений:

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

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

Ошибка 1. Форма не отправляется после отключения AJAX

Причина: другие скрипты или плагины блокируют кнопку. Проверьте конфликты, отключите плагины по одному, чтобы найти виновника.

Ошибка 2. Страница оформленья заказа перезагружается, но заказ не создается

Причина: серверные ошибки или некорректные хуки. Включите WP_DEBUG, проверьте логи, убедитесь, что шаблоны WooCommerce не переопределены устаревшим кодом.

Ошибка 3. Кнопка оформления заказа остается заблокированной

Причина: JavaScript ошибки от кастомных скриптов. Проверьте консоль браузера, отладьте скрипты, отключите кастомизацию.

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

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

Сравнение вариантов отключения AJAX в форме оплаты WooCommerce

МетодОписаниеПлюсыМинусы
Фильтр woocommerce_checkout_update_order_review_fragment Отключает AJAX обновления корзины и формы Простой код, сохраняет частичный AJAX Не отключает полностью AJAX отправку формы
Удаление обработчика формы через JS Отключает AJAX отправку на клиенте Быстрое решение, можно гибко настраивать Может конфликтовать с другими скриптами
Отключение скрипта wc-checkout Полностью отключает AJAX форму оплаты Надежное решение без AJAX Потеря плавности UX, перезагрузка страницы
WooCommerce: как добавить дополнительные поля в форму оплаты без плагинов
26.05.2026
Как отключить AJAX в WooCommerce: практическое руководство
20.04.2026
Как удалить бесполезные метаданные в WordPress
24.02.2026
Как создать автоматические отказы по формам в WordPress
06.01.2026
Как создать автоматический импорт из Telegram в WordPress
10.03.2026

Уроки со скриншотами, подробные руководства