Бесконечный цикл WordPress (wp_doing_ajax)
Дoбрый дeнь. Если использовать фильтр wp_doing_ajax, то он срабатывает и при вызове функции wp_send_json_error(), соответственно получается бесконечный цикл:
add_filter( 'wp_doing_ajax', 'call_ajax_test' );
function call_ajax_test( $wp_doing_ajax ) {
wp_send_json_error();
return $wp_doing_ajax;
}
wp_send_json('test'); // Делаем первый AJAX-запрос
Результат:
1) wp_send_json('test') -> wp_doing_ajax -> wp_send_json_error()
2) wp_doing_ajax -> wp_send_json_error()
3) wp_doing_ajax -> wp_send_json_error()
4) wp_doing_ajax -> wp_send_json_error()
5) ...
Вопрос: как вызвать wp_send_json_error() и избежать бесконечного цикла?
P.S. Вроде разобрался, но остался другой вопрос. Данный add_filter ожидает return, а wp_send_json_success() или wp_send_json_error() после своего выполнения обрывает работу при помощи die() и return не происходит :(
Ответы (1 шт):
Автор решения: Darth KYL
→ Ссылка
чтоб не было зацикливания вам нужно удалить ваш фильтр перед вызовом wp_send_json
add_filter( 'wp_doing_ajax', 'call_ajax_test' );
function call_ajax_test( $wp_doing_ajax ) {
remove_filter( 'wp_doing_ajax', 'call_ajax_test' );
wp_send_json_success();
add_filter( 'wp_doing_ajax', 'call_ajax_test' );
return $wp_doing_ajax;
}
wp_send_json('test');