wp_ajax_{$action}
Définition : wp_ajax_{$action} est un hook dynamique WordPress permettant de traiter une requête AJAX liée à une action donnée pour un utilisateur authentifié. Son nom dépend du paramètre action envoyé au serveur.
Terminologie
Terme officiel : wp_ajax_{$action}
Autres appellations : Hook AJAX authentifié
À quoi cela sert
Il permet de créer des comportements administratifs sans recharger entièrement une page : contrôle d’un statut, consultation de données ou lancement d’une action autorisée.
Comment cela fonctionne
admin-ajax.php lit le paramètre action et déclenche le hook wp_ajax_ suivi du nom correspondant. Le callback doit gérer le nonce, les droits, les entrées et la forme de la réponse.
Dans quel contexte l’utiliser
À utiliser pour un endpoint AJAX authentifié. Les accès anonymes reposent sur le hook distinct wp_ajax_nopriv_{$action}, soumis à des règles supplémentaires.
Exemple concret
Une interface de diagnostic interroge le serveur pour connaître une valeur calculée uniquement destinée aux administrateurs.
Exemple de code commenté
Extrait pédagogique PHP pour extension WordPress : adapter au contexte et tester sur un environnement de développement avant tout usage.
<?php
add_action( 'wp_ajax_atoolpha_demo_ping', function () {
check_ajax_referer( 'atoolpha_demo_ping', 'nonce' );
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error( array( 'message' => 'Accès refusé' ), 403 );
}
wp_send_json_success( array( 'etat' => 'ok' ) );
} );
// Requête POST vers admin-ajax.php : action=atoolpha_demo_ping
Explication pas à pas de l’exemple
1. Le hook enregistre le callback atoolpha_demo_ping. 2. La requête doit transmettre le même nom action. 3. Le jeton et le droit sont contrôlés. 4. Le serveur renvoie une réponse JSON.
Résultat attendu
Un administrateur autorisé reçoit un objet JSON indiquant etat=ok lorsque la requête a été préparée correctement.
Mise en pratique guidée
Créer le hook wp_ajax_atoolpha_demo_ping dans une extension de test et envoyer une requête POST avec action=atoolpha_demo_ping. Vérifier le résultat dans l’onglet Réseau du navigateur. Changer le paramètre action pour constater que le callback n’est plus sélectionné. Tester ensuite sans session pour observer la différence avec un hook nopriv.
Précautions et limites
Ne jamais supposer qu’un endpoint authentifié est automatiquement autorisé pour tous les utilisateurs connectés. Contrôler explicitement les capacités et limiter les actions coûteuses.
À ne pas confondre
wp_ajax_{$action} est réservé aux sessions authentifiées ; wp_ajax_nopriv_{$action} ouvre un chemin aux visiteurs anonymes ; REST API utilise un autre routage.
Visualisation du mécanisme
Lecture séquentielle : Parcours d’une requête AJAX de l’interface au callback PHP.
Schéma textuel du déroulement : son exécution dépend du contexte et des contrôles décrits ci-dessus.
Termes associés
- admin-ajax.php
- check_ajax_referer()
- wp_send_json_success()
