Как отключить AJAX в WooCommerce для корзины и формы оплаты

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

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

Как проверить, что AJAX именно причина

  • Откройте консоль разработчика (F12) и посмотрите на ошибки.
  • Временно отключите JavaScript в браузере и проверьте функциональность корзины.
  • Проверьте, обновляется ли корзина и форма оплаты без перезагрузки.
  • Отключите плагины, которые могут влиять на AJAX-запросы (кэширование, оптимизация).

Пошаговое отключение AJAX в WooCommerce

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

1. Отключение AJAX добавления товара в корзину

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

add_filter('woocommerce_add_to_cart_fragments', function($fragments) {
    return [];
});

remove_action('wp_footer', 'woocommerce_add_to_cart_fragments');

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

2. Отключение AJAX обновления корзины на странице оформления заказа

Для отключения AJAX на странице оформления заказа нужно переопределить скрипты WooCommerce. Добавьте в functions.php:

function disable_woocommerce_checkout_ajax() {
    if (is_checkout()) {
        wp_dequeue_script('wc-checkout');
    }
}
add_action('wp_print_scripts', 'disable_woocommerce_checkout_ajax', 100);

Это уберёт скрипт, отвечающий за AJAX-обновление корзины и полей на странице оформления заказа.

3. Отключение AJAX для виджета корзины

Если используете виджет WooCommerce с AJAX, можно отключить обновление корзины через фильтр:

add_filter('woocommerce_widget_cart_is_hidden', '__return_true');

Это скроет AJAX-обновление, и корзина будет обновляться только при полной перезагрузке.

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

  • Добавьте товар в корзину — страница должна перезагрузиться, а не обновлять корзину в фоне.
  • На странице оформления заказа измените количество или удалите товар — обновление происходит через перезагрузку страницы.
  • Проверьте консоль браузера — ошибок связанных с AJAX не должно быть.
  • Проверьте, что кэширование страниц работает корректно (если есть кэш-плагины).

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

  • Ошибка "wc-checkout" не отключается: возможно, ваш код подключается слишком рано. Попробуйте увеличить приоритет хука wp_print_scripts или использовать wp_enqueue_scripts с большим приоритетом.
  • Корзина не обновляется после добавления товара: убедитесь, что в шаблонах темы нет кастомных AJAX вызовов, которые нужно тоже отключать.
  • Кэширование мешает корректному отображению корзины: настройте исключения для страниц WooCommerce в кэш-плагинах.
  • Проблемы с мобильной версией после отключения AJAX: проверьте, не зависит ли функционал от AJAX в мобильных скриптах темы.

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

  • Отключение AJAX уменьшает нагрузку на сервер, но увеличивает количество полных перезагрузок страниц, что может ухудшить UX.
  • Если проблема вызвана конфликтом скриптов, попробуйте сначала исправить конфликт, а не полностью отключать AJAX.
  • Обязательно тестируйте после изменений на всех ключевых страницах WooCommerce (корзина, оформление заказа, добавление в корзину).
  • Для повышения производительности используйте кэширование и оптимизацию скриптов, а не отключение AJAX без веских причин.

Сравнение подходов отключения AJAX

МетодПреимуществаНедостатки
Удаление фильтра woocommerce_add_to_cart_fragmentsПростота, быстрое отключение AJAX добавления товараМожет привести к проблемам с обновлением корзины без перезагрузки
Деактивация скрипта wc-checkoutОтключает AJAX на странице оформления заказаМожет ломать некоторые динамические функции оформления заказа
Отключение AJAX в виджете корзиныУпрощает работу виджета, снижает ошибкиМенее интерактивный интерфейс
Как установить ограничение на регистрацию в WordPress по домену e-mail
20.03.2026
Как автоматизировать очистку базы данных WordPress от пустых метаданных
23.03.2026
Автоподписка в WordPress: как автоматизировать подписку на рассылку
09.01.2026
Как избежать проблем с разным форматом даты в WooCommerce
13.06.2026
Как отключить AJAX в Gravity Forms и использовать собственный AJAX-обработчик в WordPress
13.02.2026

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: