В современных темах и плагинах WordPress часто используется AJAX для динамической подгрузки контента без перезагрузки страницы. Это улучшает пользовательский опыт, но в некоторых случаях возникает необходимость полностью или частично отключить AJAX-перезагрузку. Например, когда AJAX вызывает конфликты с кастомным JavaScript, мешает SEO или усложняет отладку.
Что такое AJAX-перезагрузка и почему её иногда нужно отключать
AJAX (Asynchronous JavaScript and XML) позволяет загружать данные на страницу без её полной перезагрузки. В WordPress AJAX часто применяется для подгрузки новых постов, фильтров, форм обратной связи и т.д.
Однако не всегда AJAX нужен или полезен. Иногда он вызывает:
- конфликты с другими скриптами;
- проблемы с индексацией поисковыми системами;
- затруднения при отладке;
- неожиданное поведение при кэшировании.
Поэтому важно знать, как отключить AJAX-перезагрузку, но при этом сохранить плавность работы сайта и не ухудшить производительность.
Отключение AJAX в популярных плагинах и темах WordPress
Деактивация AJAX в WooCommerce
WooCommerce активно использует AJAX, например, для обновления корзины и фильтров товаров. Чтобы отключить AJAX в WooCommerce, можно использовать следующий код в файле functions.php вашей темы:
function wpreg_disable_woocommerce_ajax() {
// Отключаем обновление корзины через AJAX
wp_dequeue_script('wc-cart-fragments');
}
add_action('wp_enqueue_scripts', 'wpreg_disable_woocommerce_ajax', 99);Этот код отключит AJAX-обновление корзины, при этом остальные AJAX-функции WooCommerce останутся активными. Если нужно отключить больше функций, потребуется дополнительная настройка.
Отключение AJAX в плагинах для пагинации
Некоторые плагины используют AJAX для подгрузки следующей страницы с товарами или постами, например, ABC Pagination. Чтобы отключить AJAX-пагинацию, обычно достаточно в настройках плагина снять галочку «Использовать AJAX».
Если настройка отсутствует, можно отключить скрипт плагина программно:
function wpreg_disable_abc_pagination_ajax() {
wp_dequeue_script('abc-pagination-ajax');
}
add_action('wp_enqueue_scripts', 'wpreg_disable_abc_pagination_ajax', 100);Отключение AJAX для кастомных скриптов и форм
Если вы сами написали AJAX-логику или используете сторонние скрипты, которые загружают данные асинхронно, отключить AJAX можно, изменив JavaScript. Например, вместо отправки запроса через jQuery.ajax() сделать обычный POST-запрос через форму с перезагрузкой страницы.
Пример замены AJAX-запроса на обычную отправку формы:
// Было AJAX
jQuery('#myform').on('submit', function(e) {
e.preventDefault();
jQuery.ajax({
url: ajaxurl,
type: 'POST',
data: jQuery(this).serialize(),
success: function(response) {
// обработка ответа
}
});
});
// Стало обычная отправка
jQuery('#myform').off('submit'); // убираем AJAX обработчикКак избежать потери производительности при отключении AJAX
При отказе от AJAX важно сохранить удобство пользователя и скорость сайта. Для этого стоит учесть несколько рекомендаций:
- Оптимизируйте серверные запросы, чтобы страницы грузились быстро при полной перезагрузке.
- Используйте кэширование на стороне сервера — например, плагин Clearfy Pro помогает улучшить производительность и отключить ненужные скрипты.
- Сократите количество HTTP-запросов и минимизируйте CSS и JS.
- Проверьте работу сайта в разных браузерах и на мобильных устройствах после отключения AJAX.
Пример кастомного решения: условное отключение AJAX для определённых страниц
Иногда AJAX нужен на большинстве страниц, но мешает на конкретных. Можно отключить его выборочно с помощью такой функции:
function wpreg_conditional_disable_ajax() {
if (is_page('contact') || is_singular('product')) {
wp_dequeue_script('ajax-script-handle'); // замените на реальный хэндл скрипта
}
}
add_action('wp_enqueue_scripts', 'wpreg_conditional_disable_ajax', 100);Этот код отключит AJAX-скрипт только на странице контактов и на страницах товаров, сохраняя AJAX в остальных местах.
Итоги
Отключение AJAX-перезагрузки в WordPress — частая задача для разработчиков при устранении конфликтов и повышении SEO. Главное — делать это аккуратно, сохраняя скорость и удобство сайта. Используйте wp_dequeue_script для отключения скриптов, меняйте JS-логику, и применяйте условные проверки для избирательного отключения. Для ускорения сайта и улучшения контроля советуем обратить внимание на инструменты вроде Clearfy Pro.