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

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

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

Для диагностики используйте следующие шаги:

  • Откройте консоль браузера (F12) и проверьте наличие ошибок JavaScript на страницах с корзиной и товарами.
  • Проверьте сетевые запросы (вкладка Network) на предмет AJAX-запросов к admin-ajax.php и их ответов.
  • Отключите плагины поочередно, чтобы выявить возможный конфликт.
  • Переключитесь на дефолтную тему (например, Storefront) и проверьте, сохраняется ли проблема.

Почему стоит отключить AJAX в WooCommerce

AJAX полезен для улучшения UX, но в ряде случаев он вызывает проблемы:

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

В таких ситуациях временное отключение AJAX поможет стабилизировать работу.

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

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

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

add_filter('woocommerce_product_add_to_cart_url', function($url, $product) {
    return add_query_arg('add-to-cart', $product->get_id(), wc_get_cart_url());
}, 10, 2);

add_filter('woocommerce_product_add_to_cart_text', function() {
    return __('Добавить в корзину без AJAX', 'woocommerce');
});

Этот код отключает AJAX для кнопок "Добавить в корзину" на страницах архива, делая переход на страницу корзины после добавления товара.

Шаг 2. Отключение AJAX обновления мини-корзины

Добавьте следующий код для отключения обновления мини-корзины через AJAX:

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

Этот хук удаляет скрипт, который отвечает за обновление фрагментов корзины в шапке сайта.

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

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

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

Ошибка 1: Корзина не обновляется после добавления товара

Причина: кеширование страниц или отключение JavaScript.

Решение: отключите кеширование для страниц корзины и оформления заказа. Проверьте, что JavaScript загружается корректно, и нет ошибок.

Ошибка 2: Скрипты WooCommerce не подключаются

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

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

Ошибка 3: Мини-корзина не отображается

Причина: после отключения AJAX вы отключили скрипт wc-cart-fragments, но не предусмотрели обновление корзины вручную.

Решение: добавьте кнопку или ссылку для явного перехода на страницу корзины, чтобы пользователи видели обновлённый статус.

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

  • Кеширование: исключайте страницы корзины и оформления заказа из кеша для предотвращения ошибок с AJAX.
  • Минификация скриптов: будьте осторожны с минификацией JS, так как она может ломать AJAX-запросы WooCommerce.
  • Обновление WooCommerce: своевременно обновляйте WooCommerce и тему, чтобы избежать несовместимостей.
  • Безопасность AJAX: всегда используйте встроенные nonce (числа одноразового использования) для ваших AJAX-запросов, если пишете собственные.

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

МетодПлюсыМинусы
Отключение AJAX (код)Простое решение, быстро устраняет конфликты, не требует плагиновПотеря UX плавного обновления, необходимость перезагрузки страницы
Использование плагинов (например, Clearfy Pro)Управление AJAX через интерфейс, дополнительные оптимизацииДополнительная нагрузка, возможные конфликты с другими плагинами
Исправление темы/скриптовСохраняет UX, решает проблему коренным образомТребует времени и навыков, сложность диагностики
Как удалить заказы WooCommerce по статусу и датам через код
07.05.2026
Как использовать хук woocommerce_order_status_changed для автоматизации в WooCommerce
31.05.2026
Добавление собственных полей в заказ WooCommerce через хук woocommerce_checkout_update_order_meta
20.06.2026
Использование хука woocommerce_new_order для интеграции с внешними сервисами
10.05.2026
Как исправить ошибку «Не открывается корзина WooCommerce»: практическое руководство
30.06.2026