wp_doing_ajax()

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Функция позволяет определить, выполняется ли данный код как часть AJAX-запроса в WordPress.

Возвращает:

До версии 4.7 мы делали эту проверку при помощи константы DOING_AJAX, например так: if( defined( 'DOING_AJAX' ) && DOING_AJAX ).

wp_doing_ajax()

Параметры

У функции нет параметров.

Примеры

Функция в основном используется внутри условия, типо того:

if( wp_doing_ajax() ) {
	// да, в данный момент выполняется AJAX-запрос
} else {
	// нет, это самый обычный запрос
}

Предположим, что у вас есть какая-то функция, назову её true_function(), и нам нужно, что в зависимости от того, используется ли она внутри AJAX-запроса или нет, она возвращала разный результат. Точнее в разном формате. Попробуем!

function true_function() {
 
	/* ........ тут выполняется различный код внутри функции ....... */
 
	$return_data = array( 'success'  => true );
 
	if ( wp_doing_ajax() ) { // если AJAX, то возвращает результат в виде JSON
		wp_send_json_success( $return_data );
	} else { // если не AJAX, то так массив и возвращаем
		return $return_data;
	}
 
}

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

Хуки

wp_doing_ajax

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

return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX );

Вот так его можно переписать:

add_filter( 'wp_doing_ajax', 'true_change_wp_doing_ajax_behavior', 25 );
 
function true_change_wp_doing_ajax_behavior( $is_ajax ) {
 
	if( /* тут какое-то условие */ ) {
		$is_ajax = true; // или false, в зависимости от вашей цели
	}
 
	return $is_ajax;
}
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии