Как удалить AJAX-запросы из WordPress: практическое руководство

Что такое AJAX-запросы в WordPress и зачем их удалять

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

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

В этой статье мы разберем, как найти и удалить ненужные AJAX-запросы в WordPress, используя примеры кода и полезные плагины.

Как выявить ненужные AJAX-запросы в WordPress

Для начала нужно понять, какие именно AJAX-запросы выполняются на вашем сайте. Это можно сделать несколькими способами:

  • Инструменты разработчика браузера (DevTools): вкладка Network позволяет отследить все запросы, включая AJAX. Фильтруйте по XHR, чтобы увидеть только AJAX-запросы.
  • Плагины для мониторинга запросов: например, Query Monitor отображает текущие AJAX-запросы и их обработчики.
  • Просмотр исходного кода темы и плагинов: ищите хуки wp_ajax_ и wp_ajax_nopriv_, которые регистрируют обработчики AJAX.

После сбора информации составьте список ненужных AJAX-запросов, которые вы хотите отключить.

Удаление AJAX-запросов стандартных плагинов и тем

Часто темы и плагины добавляют свои AJAX-запросы через хуки add_action('wp_ajax_...') и add_action('wp_ajax_nopriv_...'). Чтобы отключить обработчик, можно удалить соответствующий хук.

Пример функции для удаления AJAX-обработчиков:

function wpskills_remove_ajax_actions() {
    // Удаляем обработчик, зарегистрированный плагином или темой
    remove_action('wp_ajax_myplugin_action', 'myplugin_ajax_handler');
    remove_action('wp_ajax_nopriv_myplugin_action', 'myplugin_ajax_handler');
}
add_action('init', 'wpskills_remove_ajax_actions');

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

Практический пример: отключение AJAX-запроса для wishlist в WooCommerce

Если у вас установлен плагин wishlist с AJAX-поддержкой, и вы хотите отключить его AJAX-запросы, можно сделать так:

function wpskills_disable_wishlist_ajax() {
    remove_action('wp_ajax_woocommerce_wishlist_add', 'woocommerce_wishlist_add_callback');
    remove_action('wp_ajax_nopriv_woocommerce_wishlist_add', 'woocommerce_wishlist_add_callback');
}
add_action('init', 'wpskills_disable_wishlist_ajax');

Таким образом, запросы на добавление товара в wishlist через AJAX перестанут работать, и можно реализовать альтернативный способ работы.

Отключение AJAX-запросов путем удаления скриптов JavaScript

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

Для удаления скриптов используйте функцию wp_dequeue_script или wp_deregister_script. Пример:

function wpskills_remove_ajax_scripts() {
    // Удаляем скрипт с AJAX функционалом
    wp_dequeue_script('myplugin-ajax-js');
    wp_deregister_script('myplugin-ajax-js');
}
add_action('wp_enqueue_scripts', 'wpskills_remove_ajax_scripts', 100);

Узнать ID скрипта можно, посмотрев в исходный код страницы или в файлы плагина/темы.

Совет: условное отключение AJAX для конкретных страниц

Чтобы не ломать функционал сайта, лучше отключать AJAX-запросы только на тех страницах, где они не нужны. Например:

function wpskills_conditional_ajax_removal() {
    if (is_page('kontakt')) { // замените на нужный slug или условие
        wp_dequeue_script('myplugin-ajax-js');
        wp_deregister_script('myplugin-ajax-js');
    }
}
add_action('wp_enqueue_scripts', 'wpskills_conditional_ajax_removal', 100);

Использование плагинов для управления AJAX-запросами

Если вы не хотите копаться в коде, можно воспользоваться специальными плагинами, которые позволяют отключать ненужные скрипты и AJAX-запросы:

  • Asset CleanUp — позволяет отключать скрипты и стили на отдельных страницах.
  • Perfmatters — платный плагин с возможностью отключать запросы и скрипты, в том числе AJAX.
  • Query Monitor — помогает найти и проанализировать AJAX-запросы, чтобы понять, какие отключать.

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

Как написать свой фильтр для AJAX-запросов в WordPress

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

Пример перехвата и модификации AJAX-запроса:

function wpskills_override_ajax_handler() {
    // Проверяем, какой AJAX-запрос вызывается
    if (isset($_POST['action']) && $_POST['action'] === 'myplugin_action') {
        // Своя логика вместо стандартной
        wp_send_json_success(['message' => 'Запрос обработан кастомно']);
        wp_die();
    }
}
add_action('wp_ajax_myplugin_action', 'wpskills_override_ajax_handler', 0);
add_action('wp_ajax_nopriv_myplugin_action', 'wpskills_override_ajax_handler', 0);

Здесь мы перехватываем запрос с действием myplugin_action и возвращаем свой ответ, отключая стандартную обработку.

Заключение: практика и тестирование при удалении AJAX-запросов

Удаление AJAX-запросов требует аккуратного подхода, чтобы не повредить важный функционал сайта. Рекомендуется:

  • Тщательно анализировать, какие запросы действительно не нужны.
  • Использовать инструменты мониторинга для проверки работы сайта после изменений.
  • Писать резервные копии и тестировать на тестовом сервере.

С помощью предложенных практик и примеров кода вы сможете эффективно оптимизировать работу WordPress, удаляя лишние AJAX-запросы и улучшая производительность сайта.

Как изменить обычный поиск WordPress на производительный и точный
21.03.2026
Как правильно удалить кэш в WordPress: пошаговое руководство
10.11.2025
Как убрать лишнюю переадресацию в WordPress после обновления плагина
28.12.2025
Как удалить CSS класс из HTML элемента в WordPress без плагинов
28.02.2026
Как настроить отслеживание событий в WordPress без плагинов
13.01.2026