Как отключить AJAX в WooCommerce на страницах Корзины и Оформления заказа для улучшения производительности

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

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

Чтобы понять, нужна ли отключение AJAX, проверьте следующие показатели:

  • Долгое время отклика страницы корзины и оформления заказа;
  • Высокая нагрузка на сервер при обработке AJAX-запросов;
  • Проблемы с кэшированием (страница не обновляется корректно после изменения корзины);
  • Конфликты JavaScript в консоли браузера, связанные с AJAX;
  • Пользовательские жалобы на некорректное обновление корзины.

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

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

Мини-корзина в WooCommerce обновляется через AJAX с помощью скрипта wc-cart-fragments. Для отключения можно убрать регистрацию этого скрипта на нужных страницах.

function disable_wc_cart_fragments_script() {
    if ( is_cart() || is_checkout() ) {
        wp_dequeue_script( 'wc-cart-fragments' );
    }
}
add_action( 'wp_enqueue_scripts', 'disable_wc_cart_fragments_script', 11 );

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

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

function disable_ajax_update_cart() {
    if ( is_cart() ) {
        wp_dequeue_script( 'wc-cart' );
    }
}
add_action( 'wp_enqueue_scripts', 'disable_ajax_update_cart', 20 );

Однако важно проверить, не сломает ли это другие функции. В некоторых случаях приходится переопределять шаблон cart.php, чтобы убрать AJAX-события с кнопок.

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

На странице оформления заказа AJAX используется для обновления данных и расчёта стоимости при изменении полей. Для отключения AJAX нужно отключить скрипт wc-checkout на этой странице:

function disable_wc_checkout_ajax() {
    if ( is_checkout() ) {
        wp_dequeue_script( 'wc-checkout' );
    }
}
add_action( 'wp_enqueue_scripts', 'disable_wc_checkout_ajax', 20 );

После этого некоторые динамические функции могут перестать работать, поэтому рекомендуем тестировать работу сайта после изменений.

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

  • Откройте страницу корзины и оформления заказа в режиме инкогнито;
  • Проверьте консоль браузера на наличие ошибок JavaScript;
  • Измените количество товара в корзине, проверьте, обновляется ли страница без AJAX;
  • Используйте инструменты разработчика (Network) для проверки, что AJAX-запросы не отправляются;
  • Проверьте скорость загрузки страницы до и после изменений, используя инструменты типа GTmetrix или PageSpeed Insights.

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

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

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

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

Варианты решения: сравнение плагин vs код vs компромисс

МетодОписаниеПлюсыМинусы
Отключение через код (как в статье)Деактивация скриптов AJAX через wp_dequeue_scriptПростой, не требует плагинов, полный контрольТребует тестирования, возможны нарушения UX
Плагины оптимизации WooCommerceПлагины для управления AJAX и кэшированием (например, Clearfy Pro)Удобство, дополнительные функции оптимизацииМожет быть платным, зависит от поддержки
Частичное отключение AJAXОтключение AJAX только в тяжелых местах, оставляя динамику там, где нужнаБаланс производительности и UXСложнее реализовать, требует тонкой настройки
Как использовать REST API в WordPress для создания настраиваемых запросов
17.11.2025
Как удалить заказы WooCommerce по клиенту и периоду через код: практическое руководство
07.06.2026
Автоматическое удаление неиспользуемых медиафайлов в WordPress
06.02.2026
Как автоматически отключить внутреннее кэширование в WooCommerce для страниц регистрации и входа
09.07.2026
Автоматическое изменение заголовков постов WordPress по заданным правилам
11.03.2026