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

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

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

Проверить наличие проблемы можно так:

  • Откройте страницу оформления заказа и измените количество товара в корзине.
  • Если при изменении количества страница не обновляется и итоговые суммы не меняются, AJAX отключён или не работает.
  • Проверьте консоль браузера на ошибки JavaScript, особенно связанные с WooCommerce скриптами wc-cart-fragments.js и checkout.js.

Почему отключают AJAX в WooCommerce?

Причины для отключения AJAX могут быть разными:

  • Конфликты с кастомными скриптами или темами, вызывающие сбои.
  • Проблемы с производительностью при большом количестве AJAX-запросов.
  • Необходимость отладки и тестирования без AJAX.

Пошаговое решение: отключаем AJAX и сохраняем работоспособность оформления заказа

Чтобы отключить AJAX в WooCommerce и при этом сохранить корректную работу оформления, нужно:

  1. Отключить стандартные AJAX-скрипты WooCommerce для корзины и оформления.
  2. Добавить серверную обработку изменения количества и обновления страницы.
  3. Обеспечить перенаправление пользователя на обновленную страницу после изменения количества товара.

Отключение AJAX обновления корзины

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

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');
add_action('wp_enqueue_scripts', function() {
    if (is_cart() || is_checkout()) {
        wp_dequeue_script('wc-cart-fragments');
        wp_dequeue_script('wc-checkout');
    }
});

Этот код отключит AJAX обновление корзины и оформления.

Обработка изменения количества товара на сервере с перенаправлением

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

<form method="post" action="<?php echo esc_url(wc_get_cart_url()); ?>">
    <input type="number" name="cart[<?php echo $cart_item_key; ?>][qty]" value="<?php echo $cart_item['quantity']; ?>" min="0" />
    <input type="submit" value="Обновить корзину" />
</form>

WooCommerce по умолчанию обрабатывает POST запросы изменения количества и обновляет корзину.

Обновление страницы после изменения количества

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

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

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

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

  • Ошибка: Кнопка обновления корзины не работает.
    Причина: отсутствует форма или неправильно настроено имя и атрибуты input.
    Решение: убедитесь, что форма и поля соответствуют стандартам WooCommerce (используйте стандартные шаблоны корзины).
  • Ошибка: Страница не обновляется автоматически после изменения количества.
    Причина: отключён AJAX, но не реализовано обновление страницы вручную.
    Решение: добавьте кнопку «Обновить корзину» с отправкой формы.
  • Ошибка: Конфликты с другими плагинами, которые используют AJAX.
    Решение: отключайте AJAX только для WooCommerce скриптов, не трогая сторонние.

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

  • Отключение AJAX может увеличить нагрузку на сервер из-за полной перезагрузки страниц — учитывайте это при большом трафике.
  • Используйте кэширование страниц с осторожностью, чтобы не показывать устаревшую корзину.
  • Минимизируйте количество кастомных изменений в шаблонах WooCommerce — лучше использовать хуки.
  • Для безопасности проверяйте nonce WooCommerce при обработке POST-запросов.

Сравнение вариантов реализации отключения AJAX в WooCommerce

ВариантПлюсыМинусы
Отключение AJAX с полной перезагрузкойПростота реализации, меньше конфликтовМедленнее, хуже UX
Использование кастомных AJAX обработчиковБыстро, лучше UXСложнее поддерживать, возможны конфликты
Использование плагинов оптимизации AJAXАвтоматизация и совместимостьЗависимость от сторонних решений
WooCommerce не работает отправка писем после обновления: диагностика и решение
26.04.2026
WooCommerce: как использовать хуки для изменения формы оформления заказа
25.06.2026
WooCommerce: как отключить автоматическое обновление строк заказов для снижения нагрузки
31.05.2026
Как удалять и изменять поля пользователя в WordPress через код
11.04.2026
Как использовать хуки для отложенного выполнения кода в WordPress
05.01.2026