Найдите метод, который вызывает AJAX GET.

Вопрос или проблема

Мне нужно найти ошибку на сайте WordPress.
Но я не могу найти метод (функцию), которую AJAX GET вызывает на бэкенде.
Это не часть администрирования сайта, а часть фронтенда.

важно
Я нашел URL, на который отправляется AJAX-запрос, но не знаю, как найти метод/функцию.

код для отправки AJAX-запроса выглядит так

У меня есть код для отправки XMLHttpRequest, что-то вроде этого:

    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://themes.qnimate.com/qplog/wp-admin/admin-ajax.php?action=logged_in_check");
    xhr.setRequestHeader("X_REQUESTED_WITH","xmlhttprequest");
    xhr.onload = function(){
        console.log(xhr.responseText);
    }
    xhr.send();

На фронтенде нет ничего похожего на add_action().

Что можете посоветовать?
Какие-то техники, советы?

Если URL выглядит как admin-ajax.php?example_ajax_request=1&data=1234

Функция add_action в коде будет wp_ajax_nopriv_example_ajax_request

Поэтому попробуйте выполнить grep по всему каталогу вашей темы или каталогу плагина для этого текста.

Пример: grep -r 'wp_ajax_nopriv_example_ajax_request' *

Второй параметр функции add_action – это имя функции, которое вы ищете.

Смотрите https://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side для примера того, как это работает.

Ответ или решение

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

Теория

AJAX-запросы в WordPress обычно обрабатываются с помощью admin-ajax.php. Для корректной обработки GET-запросов на фронтальной части сайта необходимо создать специальный хук с использованием функции add_action(). В случае фронтенда вы будете работать с привязками wp_ajax_nopriv_{action} и wp_ajax_{action}, где {action} соответствует значению, переданному в параметре action AJAX-запроса.

Пример

В вашем случае у вас есть строка запроса в формате:

http://themes.qnimate.com/qplog/wp-admin/admin-ajax.php?action=logged_in_check

Для обработки этого запроса на стороне сервера нужно найти место в коде, где реализован вызов:

add_action('wp_ajax_nopriv_logged_in_check', 'function_name');
add_action('wp_ajax_logged_in_check', 'function_name');

Где function_name — это метод, который обрабатывает AJAX-запрос. Он будет реализован в вашей теме или плагине.

Применение

  1. Поиск по коду: Используйте команду grep или аналогичный инструмент поиска текста по коду. Например:

    grep -r 'wp_ajax_nopriv_logged_in_check' *

    Выполните данный поиск в директории вашей темы и плагинов, чтобы определить, где именно зарегистрирован нужный хук.

  2. Проверка результатов: После нахождения нужного add_action(), посмотрите на вторую переменную и проверьте тело соответствующей функции, чтобы увидеть, что она выполняет.

  3. Анализ функции: Исследуйте логику внутри найденной функции, чтобы понять, как запрос обрабатывается и где может скрываться баг.

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

Успеха в отладке!

Оцените материал
Добавить комментарий

Капча загружается...