В WordPress запросы AJAX обычно используются для обработки динамической загрузки контента и асинхронных операций. Однако бывают случаи, когда вам необходимо различать запросы AJAX и обычные запросы HTTP. В этой статье мы рассмотрим различные методы с примерами кода, чтобы проверить, не является ли запрос запросом AJAX в WordPress.
Метод 1: проверка заголовка HTTP_X_REQUESTED_WITH
if ( ! isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) || 'xmlhttprequest' !== strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ) {
// Not an AJAX request
// Your code here
}
Метод 2: проверка константы «DOING_AJAX»
if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) {
// Not an AJAX request
// Your code here
}
Метод 3: использование функции wp_doing_ajax()
if ( ! wp_doing_ajax() ) {
// Not an AJAX request
// Your code here
}
Метод 4. Использование функции is_admin()
if ( ! is_admin() && ! wp_doing_ajax() ) {
// Not an AJAX request
// Your code here
}
Метод 5: проверка действий «wpajax» и «wp_ajaxnopriv»
if ( ! isset( $_REQUEST['action'] ) || ( ! has_action( 'wp_ajax_' . $_REQUEST['action'] ) && ! has_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ) ) ) {
// Not an AJAX request
// Your code here
}
Используя эти методы, вы можете легко определить, является ли запрос запросом AJAX или нет в WordPress. В зависимости от ваших конкретных требований вы можете выбрать наиболее подходящий метод для эффективной обработки запросов, отличных от AJAX. Не забудьте реализовать эти проверки в соответствующих хуках или функциях в зависимости от вашего варианта использования.