WP_DOING_AJAX() │ WP 4.7.0
Функция WP_DOING_AJAX() определяет, является ли текущий запрос AJAX-запросом в WordPress. AJAX — это технология, позволяющая обмениваться данными с сервером без перезагрузки страницы.
Как работает функция
Эта функция является оберткой для проверки, определено ли константа DOING_AJAX и равна ли она true:
defined( 'DOING_AJAX' ) && DOING_AJAX
- Примечание: Время выполнения функции составляет примерно 0.000007 секунды и 0.01 секунды, если выполняется 50000 раз.
Возвращаемое значение
Функция возвращает true, если текущий запрос — это AJAX-запрос WordPress, и false в противном случае.
Применение функции
Чтобы использовать wp_doing_ajax(), выполните следующий код:
if( wp_doing_ajax() ){
// это AJAX-запрос
}
Примеры использования
Пример 1: Различаем поведение в зависимости от типа вызова
Если мы хотим изменить поведение функции в зависимости от того, вызывается ли она как обычная функция или как AJAX-обработчик, можно использовать wp_doing_ajax() следующим образом:
function wpdocs_render() {
// Некоторая логика...
$return_data = array( 'success' => true );
if ( wp_doing_ajax() ) {
wp_send_json_success( $return_data );
} else {
return $return_data;
}
}
Пример 2: Выполнение действий только для AJAX-запросов
Вы можете добавлять хуки AJAX только для запросов AJAX.
if( wp_doing_ajax() ){
add_action( 'wp_ajax_myaction', 'ajax_handler' );
add_action( 'wp_ajax_nopriv_myaction', 'ajax_handler' );
function ajax_handler(){
// Обработчик AJAX-запросов
}
}
История изменений
- С версии 4.7.0 - функция была введена.
Код функции
Ниже приведен исходный код функции wp_doing_ajax:
function wp_doing_ajax() {
/**
* Фильтрует, является ли текущий запрос AJAX-запросом в WordPress.
*
* @since 4.7.0
*
* @param bool $wp_doing_ajax Является ли текущий запрос AJAX-запросом.
*/
return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX );
}
Связанные функции
Вот некоторые функции, которые могут быть полезны при работе с AJAX в WordPress:
check_ajax_referer(): Проверяет, что запрос действительно пришел от AJAX-запроса.wp_json_encode(): Преобразует массив или объект в JSON-формат.wp_send_json(): Отправляет данные в формате JSON и завершает выполнение скрипта.wp_send_json_error(): Отправляет данные об ошибке в формате JSON.wp_send_json_success(): Отправляет данные о успешном выполнении в формате JSON.
Условные теги (тип страницы и запрос)
WordPress предоставляет множество условных тегов, которые позволяют вам проверять различные условия, например, является ли страница главной, архивной или отчетом. Вот некоторые из них:
is_404(): Проверяет, является ли страница страницей 404 (не найдено).is_admin(): Проверяет, находится ли текущий запрос в административной панели.is_category(): Проверяет, является ли запрос категорией.
Эти условные теги помогут управлять выводом контента в зависимости от типа страницы.
Заключение
Функция wp_doing_ajax() — это полезный инструмент для работы с AJAX-запросами в WordPress. Она помогает разработчикам различать обычные запросы и AJAX-запросы, обеспечивая правильную обработку данных. Понимание этой функции поможет вам более эффективно использовать AJAX в ваших проектах на WordPress.