Функция wp_doing_ajax()
в WordPress позволяет определить, является ли текущий запрос AJAX-запросом. Это полезно для обработки запросов, отправленных через JavaScript, и для различения между обычными запросами и AJAX-запросами.
wp_doing_ajax(): bool
Возвращаемое значение
- true — если текущий запрос является AJAX-запросом WordPress.
- false — если это не AJAX-запрос.
Использование функции wp_doing_ajax()
Эта функция служит оберткой для проверки, была ли установлена константа DOING_AJAX
, и позволяет разработчикам выполнять различные действия в зависимости от типа запроса.
Пример 1: Подключение AJAX хуков
В этом примере мы добавим обработчик AJAX-запросов только если текущий запрос является AJAX:
if (wp_doing_ajax()) {
add_action('wp_ajax_my_action', 'my_ajax_handler');
add_action('wp_ajax_nopriv_my_action', 'my_ajax_handler');
function my_ajax_handler() {
// Логика обработки AJAX-запроса
$response = array('message' => 'Это AJAX ответ!');
wp_send_json_success($response);
}
}
Здесь мы добавляем хуки только в том случае, если запрос является AJAX-запросом. Это позволяет избежать загрузки ненужного кода для обычных запросов.
Пример 2: Различный вывод данных
Допустим, у нас есть функция, которая обрабатывает запросы и возвращает данные. Мы можем использовать wp_doing_ajax()
для определения, как возвращать данные:
function my_render_function() {
// Логика обработки
$data = array('success' => true);
if (wp_doing_ajax()) {
wp_send_json_success($data);
} else {
return $data;
}
}
// Вызов функции
my_render_function();
Если запрос является AJAX-запросом, функция отправит данные в формате JSON, иначе просто вернет массив.
Пример 3: Защита от несанкционированного доступа
Вы также можете использовать wp_doing_ajax()
для проверки, является ли запрос AJAX, и при необходимости выполнять дополнительную проверку прав пользователя:
if (wp_doing_ajax()) {
if (!current_user_can('edit_posts')) {
wp_send_json_error(array('message' => 'Доступ запрещен!'));
wp_die();
}
// Логика, доступная только авторизованным пользователям
$response = array('data' => 'Защищенные данные');
wp_send_json_success($response);
}
Заключение
Функция wp_doing_ajax()
— это мощный инструмент для разработчиков WordPress, который позволяет легко различать AJAX-запросы и обрабатывать их соответствующим образом. Используя эту функцию, вы можете улучшить производительность вашего сайта и обеспечить правильное взаимодействие с клиентами через AJAX.