Функция позволяет определить, выполняется ли данный код как часть 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; }