Функция WP_DOING_AJAX() в WordPress 4.7.0: Как использовать и применять

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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *