Как правильно отключить AJAX обновление корзины WooCommerce

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

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

Чтобы подтвердить, что проблема в AJAX, проверьте:

  • При добавлении товара в корзину страница не перезагружается, но данные не меняются.
  • Ошибки в консоли браузера, связанные с jQuery или wc-cart-fragments.js.
  • Появляются конфликты с кастомными JS, особенно с манипуляциями DOM элемента корзины.

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

1. Отключение фрагментов корзины через functions.php

WooCommerce использует скрипт wc-cart-fragments для AJAX обновления корзины. Чтобы отключить его, добавьте следующий код в файл functions.php вашей дочерней темы или в кастомный плагин:

add_action('wp_enqueue_scripts', 'disable_woocommerce_cart_fragments', 11);
function disable_woocommerce_cart_fragments() {
    if (function_exists('is_woocommerce')) {
        wp_dequeue_script('wc-cart-fragments');
    }
}

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

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

add_filter('woocommerce_product_add_to_cart_url', 'disable_ajax_add_to_cart_url', 10, 2);
function disable_ajax_add_to_cart_url($url, $product) {
    return $url;
}

add_filter('woocommerce_loop_add_to_cart_link', 'disable_ajax_add_to_cart_button', 10, 2);
function disable_ajax_add_to_cart_button($html, $product) {
    $html = preg_replace('/ajax_add_to_cart/', '', $html);
    return $html;
}

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

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

  • Очистите кеш браузера и кеш сайта (если есть кэш-плагины).
  • Перейдите на страницу с товарами и добавьте товар в корзину.
  • Убедитесь, что страница перезагружается после добавления товара.
  • В корзине проверьте, что количество и стоимость товаров обновляются корректно при перезагрузке страницы.
  • Проверьте консоль браузера на отсутствие ошибок, связанных с wc-cart-fragments или AJAX.

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

  • Не отключился скрипт wc-cart-fragments: Проверьте приоритет хука, попробуйте поставить 20 вместо 11 в add_action.
  • Кнопка добавления товара остается AJAX: Возможно, плагины или тема перезаписывают ссылки после фильтров. Используйте JavaScript для удаления класса ajax_add_to_cart.
  • Функция is_woocommerce() недоступна на некоторых страницах: Убедитесь, что код выполняется в правильном хуке, например wp_enqueue_scripts, и функция подключена.

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

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

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

МетодОписаниеПлюсыМинусы
Отключение скрипта wc-cart-fragmentsУдаляет AJAX обновление корзины полностьюПростая реализация, снижает AJAX-запросыПользователь не видит обновления корзины без перезагрузки
Удаление AJAX из кнопок добавления в корзинуПринудительная перезагрузка страницы при добавлении товараИзбегает конфликтов с темой и плагинамиМожет ухудшить UX, если пользователь привык к динамике
Использование JS для удаления AJAX классовКастомное управление поведением кнопокГибко, можно оставить часть AJAX-функцийТребует дополнительного JS и тестирования
Как добавить динамические таблицы в WordPress без плагинов
25.02.2026
Как использовать WPRemark для отслеживания и анализа комментариев в WordPress
25.12.2025
Как массово удалить загруженные медиа в WordPress по датам и типам файлов
08.02.2026
Как создать отслеживание пользовательских действий в WordPress с помощью AJAX и REST API
10.01.2026
Как использовать REST API в WordPress для создания настраиваемых приложений
23.11.2025