php - script - wordpress ajax url
Es Ajax en WordPress (6)
¿Hay alguna forma de detectar si la operación actual del servidor es actualmente una solicitud AJAX en WordPress?
Por ejemplo:
is_ajax()
No estoy seguro si WordPress tiene una función para esto, pero se puede hacer creando uno simple.
if (!empty($_SERVER[''HTTP_X_REQUESTED_WITH'']) && strtolower($_SERVER[''HTTP_X_REQUESTED_WITH'']) == ''xmlhttprequest'')
{
// Is AJAX request
return true;
}
Para ver si la solicitud actual es una solicitud AJAX enviada desde una biblioteca js (como jQuery ), podría intentar algo como esto:
if( ! empty( $_SERVER[ ''HTTP_X_REQUESTED_WITH'' ] ) &&
strtolower( $_SERVER[ ''HTTP_X_REQUESTED_WITH'' ]) == ''xmlhttprequest'' ) {
//This is an ajax request.
}
Sé que este es un hilo viejo, pero hay un problema con la respuesta aceptada,
La comprobación de la constante DOING_AJAX definida siempre será verdadera, si la solicitud es para el archivo admin-ajax.php. ( https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/admin-ajax.php#L16 )
A veces, los enlaces de admin-ajax.php no se utilizan para la solicitud de AJAX, solo un punto final simple (IPN de Paypal, por ejemplo).
La forma correcta es lo que Ian y Spencer han mencionado.
if( ! empty( $_SERVER[ ''HTTP_X_REQUESTED_WITH'' ] ) &&
strtolower( $_SERVER[ ''HTTP_X_REQUESTED_WITH'' ]) == ''xmlhttprequest'' ) {
//This is an ajax request.
}
(Habría comentado ... pero no rep)
Si está utilizando AJAX como se recomienda en el codex , entonces puede probar la constante DOING_AJAX
:
if (defined(''DOING_AJAX'') && DOING_AJAX) { /* it''s an AJAX call */ }
WordPress 4.7 introdujo una manera fácil de verificar las solicitudes de AJAX, así que pensé en agregar a esta pregunta anterior.
wp_doing_ajax()
De la Referencia del desarrollador :
Descripción: determina si la solicitud actual es una solicitud de WordPress Ajax.
Return: (bool) Verdadero si es una solicitud de WordPress Ajax, de lo contrario es falso.
Es esencialmente un contenedor para DOING_AJAX.
if ( ! function_exists(''is_ajax'') ) {
function is_ajax() {
return defined( ''DOING_AJAX'' );
}
}