AJAX-запросы в WordPress активно используются для улучшения интерактивности сайта, позволяя обновлять части страницы без полной перезагрузки. Однако со временем на сайте могут накапливаться неиспользуемые или устаревшие AJAX-обработчики, которые замедляют работу сайта и нагружают сервер без причины. В этой статье подробно разберём, как определить и удалить такие неиспользуемые AJAX-запросы, чтобы повысить производительность и безопасность вашего WordPress-сайта.
Что такое AJAX-запросы в WordPress и почему их нужно оптимизировать
AJAX (Asynchronous JavaScript and XML) — это технология, позволяющая отправлять запросы к серверу в фоне без перезагрузки страницы. В WordPress для AJAX используются специальные хуки wp_ajax_{action} и wp_ajax_nopriv_{action}, где {action} — имя действия.
Каждый зарегистрированный AJAX-обработчик добавляет нагрузку на сервер, даже если фактически не используется. Например, плагины после удаления могут оставить в базе данные о своих AJAX-действиях или темы могут содержать устаревшие функции, которые не вызываются на сайте. Это приводит к лишним запросам, замедлению отклика и увеличению расхода ресурсов.
Почему важно удалять неиспользуемые AJAX-запросы
- Ускорение сайта: меньше обработчиков — быстрее обработка запросов.
- Снижение нагрузки на сервер: экономия ресурсов хостинга.
- Повышение безопасности: уменьшение поверхности атаки, так как неиспользуемые обработчики могут содержать уязвимости.
- Чистота кода и базы данных: упрощение поддержки и обновления сайта.
Как определить неиспользуемые AJAX-запросы в WordPress
Первый шаг — понять, какие AJAX-действия зарегистрированы и какие реально используются на сайте. Для этого есть несколько методов.
Метод 1: Просмотр зарегистрированных AJAX-хуков
Все AJAX-обработчики регистрируются через хуки add_action. Чтобы вывести список всех зарегистрированных AJAX-действий, можно использовать следующий код, который нужно добавить в файл functions.php вашей темы или в отдельный плагин:
function wpclean_list_ajax_actions() {
global $wp_filter;
$ajax_actions = [];
foreach ($wp_filter as $hook_name => $hook) {
if (strpos($hook_name, 'wp_ajax_') === 0 || strpos($hook_name, 'wp_ajax_nopriv_') === 0) {
$ajax_actions[] = $hook_name;
}
}
echo '<pre>';
print_r($ajax_actions);
echo '</pre>';
}
add_action('admin_notices', 'wpclean_list_ajax_actions');
После захода в админку увидите список всех зарегистрированных AJAX-действий. Это поможет понять, какие из них возможно уже не используются.
Метод 2: Анализ логов и мониторинг запросов AJAX
Для более точного анализа можно установить плагин, например, Query Monitor, который позволяет мониторить AJAX-запросы в реальном времени. Отслеживайте, какие AJAX-действия вызываются в течение определённого времени, и сравнивайте с зарегистрированными в коде.
Если какое-то действие ни разу не вызвалось — это кандидат на удаление.
Как удалить неиспользуемые AJAX-обработчики
Удалить AJAX-обработчики можно разными способами, в зависимости от того, как они добавлены.
Удаление через remove_action
Если вы знаете имя обработчика и хук, можно отключить его с помощью remove_action. Пример кода для удаления AJAX-обработчика wp_ajax_old_action:
function wpclean_remove_unused_ajax() {
remove_action('wp_ajax_old_action', 'old_action_callback');
remove_action('wp_ajax_nopriv_old_action', 'old_action_callback');
}
add_action('init', 'wpclean_remove_unused_ajax');
Обратите внимание, что нужно знать имя функции-обработчика (в примере — old_action_callback). Если не знаете, ищите её в исходниках плагинов или темы.
Удаление с помощью отключения плагина или удаления кода
Если AJAX-обработчики принадлежат плагинам, которые больше не используются, лучший способ — полностью удалить плагин и очистить базу данных от его следов. Для этого можно использовать плагин Clearfy Pro, который умеет удалять остаточные данные плагинов и оптимизировать базу.
Как автоматизировать очистку неиспользуемых AJAX-запросов
Ручной поиск и удаление AJAX-обработчиков может быть трудоёмким, особенно на больших сайтах. Для автоматизации процесса рекомендуем:
- Использовать плагин Clearfy Pro — он помогает выявлять и отключать неиспользуемые функции, в том числе AJAX-запросы.
- Внедрять мониторинг AJAX-запросов со сторонними инструментами (например, New Relic или Query Monitor), чтобы отслеживать частоту вызовов и исключать редко используемые.
- Писать собственные функции для логирования вызовов AJAX-действий, чтобы накапливать статистику и принимать решения по удалению.
Пример логирования вызовов AJAX-действия
function wpclean_log_ajax_calls() {
$action = isset($_REQUEST['action']) ? sanitize_text_field($_REQUEST['action']) : '';
if ($action) {
error_log('AJAX call: ' . $action);
}
}
add_action('wp_ajax_wpclean_logger', 'wpclean_log_ajax_calls');
add_action('wp_ajax_nopriv_wpclean_logger', 'wpclean_log_ajax_calls');
Добавьте этот код и настройте на сайте вызовы wpclean_logger для сбора статистики, затем проанализируйте логи.
Заключение по удалению неиспользуемых AJAX-запросов
Удаление неиспользуемых AJAX-запросов — важный аспект оптимизации WordPress, напрямую влияющий на скорость и безопасность. Используйте описанные методы для выявления и удаления лишних обработчиков, а также применяйте инструменты, такие как Clearfy Pro, для автоматизации и упрощения процесса.