Подтвердить что ты не робот

Является Ajax в WordPress

Есть ли в любом случае, чтобы определить, является ли текущая операция сервера в настоящее время запросом AJAX в WordPress?

Например:

is_ajax()
4b9b3361

Ответ 1

Обновление: начиная с WordPress 4.7.0 вы можете вызывать функцию wp_doing_ajax(). Это предпочтительно, потому что плагины, которые "делают Ajax" по-другому, могут фильтровать, чтобы превратить "ложь" в "истину".


Оригинальный ответ:

Если вы используете Ajax в соответствии с рекомендациями кодекса, вы можете проверить константу DOING_AJAX:

if (defined('DOING_AJAX') && DOING_AJAX) { /* it an Ajax call */ }

Ответ 2

WordPress 4.7 предоставил простой способ проверить запросы AJAX, поэтому я подумал, что добавлю к этому старому вопросу.

wp_doing_ajax()

Из Справочник разработчика:

  • Описание: Определяет, является ли текущий запрос запросом WordPress Ajax.

  • Возврат: (bool) Истина, если это запрос Ajax WordPress, в противном случае - false.

Это, по сути, оболочка для DOING_AJAX.

Ответ 3

Чтобы узнать, является ли текущий запрос AJAX запросом, отправленным из библиотеки js (например, jQuery), вы можете попробовать что-то вроде этого:

if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
      strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
    //This is an ajax request.
}

Ответ 4

Я не уверен, что для WordPress есть функция для этого, но это можно сделать, создав простой.

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    // Is AJAX request
    return true; 
}

Ответ 5

Я знаю, что это старая ветка, но есть проблема с принятым ответом,

Проверка определенной константы DOING_AJAX всегда будет выполняться, если запрос к файлу admin-ajax.php. (https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/admin-ajax.php#L16)

Иногда перехватчики admin-ajax.php не используются для запроса AJAX, это просто простая конечная точка (например, Paypal IPN).

Иан и Спенсер упомянули правильный путь.

if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
      strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
    //This is an ajax request.
}

(прокомментировал бы... но без представителя)

Ответ 6

if ( ! function_exists('is_ajax') ) {
    function is_ajax() {
        return defined( 'DOING_AJAX' );
    }
}

Ответ 7

Я лично предпочитаю wp_doing_ajax(), но вот еще один пример, который должен это сделать.

if( true === strpos( $_SERVER[ 'REQUEST_URI' ], 'wp-admin/admin-ajax.php' ) ) {
    // is doing ajax
}