Диагностика проблемы: почему AJAX на странице оформления заказа замедляет процесс
WooCommerce по умолчанию использует AJAX для обновления корзины и информации на странице оформления заказа без перезагрузки страницы. Это удобно для пользователя, но на некоторых хостингах или при конфликте плагинов AJAX-запросы могут тормозить или вызывать ошибки, из-за чего страница оформления заказа загружается дольше.
Если ваши пользователи жалуются на медленное оформление заказа, первый шаг — проверить, действительно ли AJAX на странице checkout влияет на скорость.
Как проверить влияние AJAX на производительность оформления заказа
- Откройте консоль браузера (F12) на странице оформления заказа и перейдите на вкладку Network.
- Обновите страницу и следите за AJAX-запросами, которые отправляются при изменении данных (например, при выборе способа доставки или оплаты).
- Если запросы занимают много времени (больше 500 мс) или часто повторяются, это может замедлять оформление заказа.
- Проверьте логи сервера на предмет ошибок PHP, связанных с Ajax-запросами WooCommerce.
Пошаговое решение: отключаем AJAX на странице оформления заказа
Отключить AJAX в WooCommerce можно двумя способами — через код или с помощью фильтра WooCommerce.
1. Отключение AJAX обновления корзины (cart fragments)
Этот AJAX используется для обновления количества товаров в корзине без перезагрузки страницы. Его отключение улучшит производительность, но обновление количества товаров будет работать только при перезагрузке страницы.
add_action('wp_enqueue_scripts', 'disable_woocommerce_cart_fragments', 11);
function disable_woocommerce_cart_fragments() {
if (is_checkout()) {
wp_dequeue_script('wc-cart-fragments');
}
}
2. Отключение AJAX обновления на странице оформления заказа
Чтобы полностью отключить AJAX в checkout, можно убрать скрипты, которые отвечают за динамическое обновление полей.
add_action('wp_enqueue_scripts', 'disable_checkout_ajax', 11);
function disable_checkout_ajax() {
if (is_checkout()) {
wp_dequeue_script('wc-checkout');
}
}
Этот код отключит AJAX-скрипты, ответственные за динамическое обновление данных на странице оформления заказа.
Как проверить, что решение сработало
- Очистите кеш браузера и кеш сайта (если есть).
- Перейдите на страницу оформления заказа и откройте вкладку Network в консоли разработчика.
- Измените способ оплаты или доставки и посмотрите, исчезли ли AJAX-запросы к admin-ajax.php.
- Обратите внимание, что при изменении данных страница не обновляется динамически — значит AJAX отключен.
- Проверьте скорость загрузки страницы с помощью инструментов, например Google Lighthouse или GTmetrix.
Частые ошибки и как их исправить
- Ошибка: Отключение AJAX приводит к некорректному отображению цены или способов доставки.
Причина: Некоторые темы или плагины зависят от AJAX, чтобы обновлять данные.
Решение: Проверьте совместимость темы и плагинов, протестируйте отключение на тестовом сайте. - Ошибка: После отключения AJAX оформление заказа работает медленнее.
Причина: Без AJAX страница перезагружается при каждом изменении, что увеличивает время.
Решение: Используйте этот способ только если AJAX вызывает ошибки или тормозит на вашем сервере. - Ошибка: Отключение не сработало, AJAX-запросы продолжают идти.
Причина: Код добавлен неправильно или конфликтует с другими функциями.
Решение: Проверьте, что код добавлен в functions.php активной темы или в собственный плагин, и нет дубликатов.
Практические советы по оптимизации и безопасности
- Если отключаете AJAX, обязательно тестируйте поведение оформления заказа при разных сценариях: разные способы оплаты, доставки, купоны.
- Используйте плагин Clearfy Pro для очистки лишних скриптов WooCommerce и оптимизации сайта (https://wpshop.ru/plugins/clearfy?utm_source=expert-review.ru&utm_medium=article&utm_campaign=kak-otkljuchit-ajax-v-woocommerce-dlja-uskorenija-oformlenija-zakaza).
- Регулярно обновляйте WooCommerce и тему, чтобы минимизировать баги с AJAX.
- Мониторьте нагрузку на сервер и логи ошибок для выявления проблем с AJAX-запросами.