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

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

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

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

  • После добавления товара в корзину страница не обновляется, и количество товаров в корзине не меняется.
  • При обновлении количества товара в корзине нет видимого изменения без перезагрузки страницы.
  • Возникают ошибки JavaScript в консоли браузера, связанные с AJAX запросами WooCommerce (например, ошибки 400 или 500).
  • Появляется конфликт с другими плагинами, блокирующими AJAX или изменяющими поведение корзины.

Пошаговое отключение AJAX обновления корзины

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

1. Отключение стандартного скрипта обновления корзины

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

function disable_woocommerce_ajax_cart_update() {
    wp_dequeue_script('wc-cart-fragments');
    wp_dequeue_script('woocommerce');
    wp_dequeue_script('wc-add-to-cart');
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_ajax_cart_update', 99);

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

2. Подключение принудительной перезагрузки страницы при изменениях в корзине

Чтобы сохранить удобство работы с корзиной, добавьте JavaScript, который будет после добавления товара или изменения количества принудительно обновлять страницу:

function force_page_reload_after_cart_update() {
    if (is_cart() || is_checkout()) {
        ?>
        <script type="text/javascript">
        jQuery(function($) {
            // При клике на кнопку обновления количества
            $('form.woocommerce-cart-form').on('submit', function() {
                // стандартное поведение — перезагрузка страницы
                return true;
            });

            // При добавлении товара в корзину
            $('body').on('added_to_cart', function() {
                window.location.reload();
            });
        });
        </script>
        <?php
    }
}
add_action('wp_footer', 'force_page_reload_after_cart_update');

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

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

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

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

  • Код не работает, корзина не обновляется: проверьте, что код добавлен в файл functions.php дочерней темы, а не в родительскую.
    Убедитесь, что нет конфликтов с другими плагинами, которые могут повторно подключать скрипты.
  • AJAX обновление продолжает работать: возможно, другие плагины повторно подключают скрипты. Попробуйте увеличить приоритет хука wp_enqueue_scripts при деактивации (например, 999).
  • Скрипт перезагрузки страницы не срабатывает: убедитесь, что jQuery загружен. WooCommerce по умолчанию грузит jQuery, но если тема или плагины отключают его — нужно подключить вручную.

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

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

Сравнение вариантов решения проблемы

МетодПреимуществаНедостатки
Отключение AJAX и перезагрузка страницыПростота реализации, совместимость с большинством тем и плагинов, уменьшение конфликтовПотеря плавности UX, больше времени загрузки страницы
Исправление конфликтующих плагинов и поддержка AJAXСохраняется быстрый и плавный UX, современные подходыТребует анализа и времени, возможны сложности с обновлениями плагинов
Использование сторонних плагинов для управления AJAXМожет предложить гибкие настройки, автоматизацияДополнительная нагрузка, возможные новые конфликты, необходимость обновления
Удалить все записи в WordPress: эффективные методы удаления контента
21.11.2025
WooCommerce: как автоматически удалять неактивные товары через CRON
11.06.2026
Как автоматизировать удаление старых медиафайлов в WordPress
20.02.2026
Как создать собственный шорткод в WordPress
06.11.2025
WooCommerce: как отключить автоматическое обновление строк заказов для снижения нагрузки
04.06.2026