AJAX-запросы в WordPress широко используются для динамического обновления контента без перезагрузки страницы. Однако избыточное или неправильно настроенное использование AJAX может негативно сказаться на производительности сайта, увеличивая нагрузку на сервер и замедляя загрузку страниц. В этой статье рассмотрим, как автоматически отключать ненужные AJAX-запросы в WordPress, чтобы оптимизировать работу сайта и повысить скорость.
Что такое AJAX в WordPress и почему его стоит контролировать
AJAX — это технология, позволяющая отправлять запросы к серверу и получать ответы без перезагрузки страницы. В WordPress AJAX часто применяется в административной панели, плагинах и темах для интерактивности.
Однако не все AJAX-запросы нужны на каждой странице сайта. Например, скрипты WooCommerce делают AJAX-запросы для обновления корзины, но если корзина не используется, эти запросы только расходуют ресурсы.
Избыточное использование AJAX может привести к:
- увеличению времени загрузки страниц;
- повышенной нагрузке на сервер;
- потере баллов в Google PageSpeed и других инструментах анализа скорости.
Поэтому целесообразно отключать AJAX-запросы там, где они не нужны.
Как определить ненужные AJAX-запросы на сайте WordPress
Для начала нужно выявить, какие AJAX-запросы выполняются на страницах вашего сайта. Это можно сделать с помощью инструментов разработчика в браузере:
- Откройте вкладку Network;
- Выберите фильтр XHR — именно в этом разделе отображаются AJAX-запросы;
- Обновите страницу и изучите, какие запросы выполняются.
Обратите внимание на URL запросов — в WordPress AJAX выполняется через admin-ajax.php. Запросы могут содержать параметр action, определяющий функцию-обработчик.
После выявления неиспользуемых запросов можно приступить к их отключению.
Автоматическое отключение AJAX-запросов через functions.php
Чтобы отключить AJAX-запросы, нужно не только убрать скрипты, которые их вызывают, но и отключить обработчики на сервере. Рассмотрим пример отключения AJAX-запросов плагина Contact Form 7 на страницах, где форма не используется.
Отключение скриптов и обработчиков Contact Form 7
Contact Form 7 добавляет скрипты и AJAX-обработчики для отправки форм. Если на странице форма не выводится, эти скрипты можно отключить:
function wpaddons_disable_cf7_scripts() {
if (!is_page('contact')) { // Замените 'contact' на slug вашей страницы с формой
// Отключаем скрипты Contact Form 7
wp_dequeue_script('contact-form-7');
wp_dequeue_style('contact-form-7');
}
}
add_action('wp_enqueue_scripts', 'wpaddons_disable_cf7_scripts', 20);
// Отключаем обработчик AJAX
function wpaddons_disable_cf7_ajax() {
if (!is_page('contact')) {
remove_action('wp_ajax_wpcf7_submit', 'wpcf7_ajax_json_echo');
remove_action('wp_ajax_nopriv_wpcf7_submit', 'wpcf7_ajax_json_echo');
}
}
add_action('init', 'wpaddons_disable_cf7_ajax');
Этот код отключит загрузку скриптов и обработчиков AJAX Contact Form 7 на всех страницах, кроме страницы с формой.
Отключение WooCommerce AJAX на нецелевых страницах
WooCommerce активно использует AJAX для обновления корзины, фильтров, рейтингов и пр. Если на сайте используется WooCommerce, но не на всех страницах нужна AJAX-логика, её можно ограничить.
Отключение фрагментов корзины WooCommerce
Фрагменты корзины обновляются через AJAX, вызывая дополнительные запросы. Чтобы отключить их на страницах без корзины или магазина, используйте следующий код:
function wpaddons_disable_woocommerce_cart_fragments() {
if (!is_cart() && !is_checkout() && !is_shop()) {
wp_dequeue_script('wc-cart-fragments');
}
}
add_action('wp_enqueue_scripts', 'wpaddons_disable_woocommerce_cart_fragments', 99);
Это значительно снизит количество AJAX-запросов и улучшит скорость загрузки.
Использование плагина Clearfy Pro для управления AJAX-запросами
Если вы предпочитаете готовые решения, обратите внимание на Clearfy Pro. Этот плагин позволяет отключать ненужные скрипты и AJAX-запросы без копания в коде.
В Clearfy Pro можно управлять:
- Отключением скриптов WooCommerce на нецелевых страницах;
- Отключением плагинов и их AJAX-логики по расписанию;
- Управлением загрузкой скриптов и стилей по условию.
Это существенно упрощает оптимизацию сайта.
Как создавать собственные функции для выборочного отключения AJAX в WPAddons
Если у вас есть собственные AJAX-обработчики, можно создавать функции с префиксом wpaddons_ для их условного отключения.
Пример: отключение AJAX-обработчика wpaddons_custom_action
function wpaddons_disable_custom_ajax() {
if (!is_page('my-special-page')) {
remove_action('wp_ajax_wpaddons_custom_action', 'wpaddons_custom_action_handler');
remove_action('wp_ajax_nopriv_wpaddons_custom_action', 'wpaddons_custom_action_handler');
}
}
add_action('init', 'wpaddons_disable_custom_ajax');
Так вы можете гибко управлять загрузкой AJAX-логики под конкретные страницы и задачи.
Советы для эффективного управления AJAX-запросами в WordPress
- Регулярно анализируйте AJAX-запросы с помощью инструментов разработчика;
- Отключайте скрипты и обработчики там, где они не нужны;
- Используйте условные теги WordPress для точечного управления загрузкой;
- Тестируйте сайт после внесения изменений на предмет корректной работы функционала;
- Рассмотрите покупку и использование плагинов, оптимизирующих загрузку скриптов, например, Clearfy Pro.
Автоматическое отключение ненужных AJAX-запросов — важный шаг к повышению скорости и оптимизации сайта на WordPress. Используйте приведённые советы и примеры кода, чтобы сделать ваш сайт быстрее и комфортнее для пользователей.