Est Ajax dans WordPress
Existe-t-il de toute façon pour détecter si l'opération actuelle du serveur est actuellement une requête AJAX dans WordPress?
Par exemple:
is_ajax()
6 réponses
Si vous utilisez AJAX comme recommandé dans le codex , Vous pouvez tester la constante DOING_AJAX
:
if (defined('DOING_AJAX') && DOING_AJAX) { /* it's an AJAX call */ }
WordPress 4.7 a introduit un moyen facile de vérifier les demandes AJAX, donc j'ai pensé que j'ajouterais à cette question plus ancienne.
wp_doing_ajax()
De la référence du développeur :
Description: détermine si la demande actuelle est une demande Ajax WordPress.
Return: (bool) True s'il s'agit D'une requête Ajax WordPress, false sinon.
C'est essentiellement un wrapper pour DOING_AJAX.
Pour voir si la requête courante est un AJAX demande envoyée à partir d'une bibliothèque js ( comme jQuery ), vous pouvez essayer quelque chose comme ceci:
if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
//This is an ajax request.
}
Je ne suis pas sûr si WordPress a une fonction pour cela mais cela peut être fait en créant un simple vous-même.
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
// Is AJAX request
return true;
}
if ( ! function_exists('is_ajax') ) {
function is_ajax() {
return defined( 'DOING_AJAX' );
}
}
Je sais que c'est un vieux fil, mais il y a un problème avec la réponse acceptée,
La vérification de la constante doing_ajax définie sera toujours true, si la requête est à l'admin-ajax.fichier php. ( https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/admin-ajax.php#L16 )
Parfois admin-ajax.les hooks php ne sont pas utilisés pour les requêtes AJAX, juste un point de terminaison simple (Paypal IPN par exemple).
La bonne façon Est ce que Ian et Spencer ont mentionner.
if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
//This is an ajax request.
}
(aurait commenté... mais pas de rep)