wp_send_json_error()

Définition : wp_send_json_error() renvoie une réponse JSON WordPress signalant l’échec d’une opération. La propriété success prend la valeur false, et des informations complémentaires ou un code HTTP peuvent préciser le problème.

Terminologie

Terme officiel : wp_send_json_error()

Autres appellations : Réponse AJAX d’erreur

À quoi cela sert

Elle permet aux interfaces AJAX de traiter de manière cohérente les échecs : permission insuffisante, saisie invalide ou ressource non trouvée.

Comment cela fonctionne

La fonction construit et envoie une structure JSON contenant success=false et éventuellement data. Elle termine le traitement ; le code HTTP reste à choisir explicitement lorsque l’échec doit également être signalé au niveau du protocole.

Dans quel contexte l’utiliser

À utiliser dans un handler AJAX lorsqu’une opération a échoué ou ne peut être exécutée, avec un message compréhensible.

Exemple concret

Une interface tente de déclencher un contrôle réservé aux administrateurs ; le serveur doit refuser et fournir un statut exploitable.

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_refus', function () {
    check_ajax_referer( 'atoolpha_demo_refus', 'nonce' );
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_send_json_error(
            array( 'message' => 'Droit insuffisant.' ), 403
        );
    }
    wp_send_json_success( array( 'message' => 'Autorisé.' ) );
} );

Explication pas à pas de l’exemple

1. Le handler contrôle le nonce. 2. La permission manage_options est évaluée. 3. En cas de refus, wp_send_json_error() génère success=false et un HTTP 403. 4. Sinon, la réponse est positive.

Résultat attendu

Le navigateur peut distinguer un succès métier d’un refus d’accès et afficher un message adapté à l’utilisateur.

Mise en pratique guidée

Comparer deux réponses d’échec : wp_send_json_error([…]) sans code HTTP explicite, puis avec 403. Examiner dans le navigateur la propriété success et le statut réseau. Le premier peut être transporté en HTTP 200 malgré l’échec métier. Cette distinction aide les interfaces à traiter correctement les contrôles d’accès et la gestion des erreurs.

Précautions et limites

Sans argument de statut HTTP, une réponse avec success=false peut malgré tout recevoir HTTP 200. Éviter d’exposer des détails techniques privés dans le champ message.

À ne pas confondre

wp_send_json_error() marque un échec ; wp_send_json_success() marque une réussite ; ces fonctions ne remplacent pas un contrôle de permission.

Termes associés

  • wp_send_json_success()
  • current_user_can()

Références officielles

Bouton retour en haut de la page