Gestion des erreurs WordPress avec WP_Error Class I

Même si vous portez un S sur la poitrine, quand il s’agit de programmer, des erreurs s’insinueront dans votre application. Ces erreurs sont soit causées par nous, les programmeurs, à la suite d’une erreur de code, soit par les utilisateurs qui ne souhaitent pas se conformer aux contraintes de l’application ou du site Web..

Les erreurs causées par les utilisateurs finaux sont généralement plus défavorables que celles du programmeur car les données ou informations saisies par l'utilisateur sont imprévisibles..

Par exemple, dans un champ de formulaire de courrier électronique, au lieu de saisir un courrier électronique valide, l'utilisateur peut saisir un texte non-email. Si le site Web ne dispose pas d'un mécanisme solide de traitement des erreurs, l'utilisateur peut obtenir un accès non autorisé à des informations sensibles..

Étant donné que le comportement des utilisateurs est imprévisible, un site Web ou une application peut être programmé pour rejeter catégoriquement les données non valides entrées par l'utilisateur et informer l'utilisateur que les données sont invalides. Ce processus est ce qu'on appelle la gestion des erreurs

WordPress est livré avec une classe WP_Error qui facilite la gestion des erreurs dans les plugins et WordPress lui-même.

Comprendre WP_Error

le WP_Error La classe se compose de deux propriétés et de huit méthodes. Ces propriétés sont utilisées en interne par la classe et vous n’avez probablement pas besoin de ces propriétés car la plupart des tâches que vous souhaitez effectuer peuvent être accomplies à l’aide des méthodes de classe..

Vous trouverez ci-dessous les propriétés des deux classes et leur rôle..

  • $ erreurs estun tableau contenant la liste des erreurs.
  • $ error_data est un tableau contenant la liste des données pour les codes d'erreur.

Avant d’examiner les méthodes de classe, j’aimerais expliquer ces trois termes utilisés en interne par les WP_Error class - Code, Message, Données.

Ne vous inquiétez pas si elles sont difficiles à comprendre pour le moment - nous allons clarifier les choses lorsque nous examinons des exemples de code dans la section suivante..

  • Le code est similaire à une paire de données clé / valeur telle qu’un tableau: le code en ce sens est la clé.
  • Le message est la valeur d’une paire clé / valeur enregistrée dans le les erreurs propriété de classe.
  • Les données, comme le message ci-dessus, il s'agit de la valeur d'une clé ( code ) mais enregistré dans le error_data propriété.

Passons maintenant aux méthodes de classe et à ce qu'elles font:

  • __construction() est une méthode magique PHP accepte trois arguments - code, message et données. Passer l'argument sur l'instanciation du WP_Error la classe met en place le message d'erreur.
  • get_error_codes ()renvoie une liste de tous les codes d'erreur, le cas échéant.
  • get_error_code ()récupère le premier code d'erreur et renvoie une chaîne, un entier ou vide s'il n'y a pas de code d'erreur.
  • get_error_messages ($ code) récupérer tous les messages d'erreur lorsque le code l'argument est absent ou des messages d'erreur correspondant à la code argument. Retourne un tableau de chaînes d'erreur en cas de succès ou un tableau vide en cas d'échec (si vous utilisez un paramètre de code).
  • get_error_message ($ code)obtient un message d'erreur unique. Cela donnera le premier message disponible pour le code. Si aucun code n'est donné, le premier code disponible sera utilisé. Renvoie une chaîne d'erreur. 
  • get_error_data ($ code) récupérer les données d'erreur pour un code d'erreur donné. Renvoie les données ou null, si aucune erreur. 
  • add ($ code, $ message, $ data)ajouter plus de messages d'erreur à la liste des messages d'erreur.
  • add_data ($ data, $ code)ajoute des données pour le code d'erreur. Le code d'erreur ne peut contenir qu'une seule donnée d'erreur.

Comment fonctionne la classe WP_Error

Pour utiliser le WP_Error class pour la gestion des erreurs, instanciez d’abord la classe suivie par l’utilisation de la méthode class. Vous pouvez ajouter un message d'erreur en passant le code, message, et Les donnéessur l'instanciation.

$ mon_erreur = new WP_Error ('jouet', 'mon jouet préféré est le chariot');

Examen de la structure de l'objet $ my_error via print_r () révèle:

WP_Error Object ([errors] => Array ([toy] => Array ([0] => mon jouet préféré est dolly)) [error_data] => Array () 

Notez que notre erreur définie est stockée dans les erreurs propriété de classe alors que le error_data propriété n'a pas de données.

Passer un troisième argument sur l’instanciation crée une donnée avec le code (premier argument) étant la clé du tableau et le troisième argument (Les données), la valeur du tableau.


WP_Error Object ([errors] => Array ([toy] => Array ([0] => mon jouet préféré est dolly)) [error_data] => Array ([toy] => mon meilleur))

Pour ajouter ou ajouter d'autres messages d'erreur à la liste des erreurs, le ajouter méthode est utilisée qui accepte code, message, et Les données comme argument de méthode.

add ('game', 'ma console de jeu préférée est PS4');

Passer un troisième argument (type de données mixte) à la ajouter() méthode ajoute une donnée au code d'erreur.

add ('game', 'ma console de jeu préférée est PS4', 'best game');

En utilisant print_r ()  encore une fois, regardons la structure et les informations de notre $ mon_erreur WP_Error objet.

WP_Error Object ([errors] => Array ([toy] => Array ([0] => mon jouet préféré est dolly) [jeu] => Array ([0] => ma console de jeu préférée est PS4)) [error_data ] => Array ([jouet] => meilleur jouet [jeu] => meilleur jeu))

le add_data () Cette méthode pourrait également être utilisée pour ajouter strictement des données pour le code d'erreur. Le code d'erreur ne peut contenir qu'une seule donnée d'erreur.

$ my_error-> add_data ('mon meilleur professeur est Oncle Sam', 'professeur');

Nous avons appris à instancier et à ajouter un message d’erreur et des données au WP_Error objet. Voyons comment récupérer le message d'erreur, le code et les données.

En utilisant le get_error_codes () méthode retourne une liste de tous les codes d'erreur.

print_r ($ my_error-> get_error_codes ()); / * retourne Array ([0] => jouet [1] => jeu) * /

Tandis que get_error_code () renvoie uniquement le premier code d'erreur.

print_r ($ my_error-> get_error_code ()); // jouet

le get_error_messages () Récupérer tous les messages d'erreur lorsque le code l'argument est absent ou des messages d'erreur correspondant à la code argument.

print_r ($ my_error-> get_error_messages ()); / * renvoie Array ([0] => mon jouet préféré est dolly [1] => ma console de jeu préférée est PS4) * /

print_r ($ my_error-> get_error_messages ('jeu')); / * renvoie Array ([0] => ma console de jeu préférée est PS4) * /

le get_error_message () renvoie un seul message d'erreur correspondant au code. si aucun code, retourne le premier message d'erreur.

print_r ($ my_error-> get_error_message ()); // mon jouet préféré est dolly

le get_error_data () renvoie les données pour le code d'erreur.

print_r ($ my_error-> get_error_data ()); // meilleur jouet

print_r ($ my_error-> get_error_data ('teacher')); // mon meilleur professeur est oncle Sam

Lors de la construction d’un plugin, vous pouvez vérifier si une variable est un WP_Error objet. C'est ici que is_wp_error () est très pratique.

Vous voudrez peut-être aussi vous assurer que WP_Error L'objet ne contient aucun message d'erreur avant le traitement d'une action. Par exemple, l’extrait de code ci-dessous vérifie si $ mon_erreur objet ne contient aucune erreur. Si vrai, "Aucune erreur, nous sommes prêts à partir"est répété.

if (1> count ($ my_error-> get_error_messages ())) echo "Aucune erreur, nous sommes prêts à partir"; 

Résumé

Dans cette première partie de la série sur la gestion des erreurs dans WordPress en utilisant WP_Error, nous avons jeté un coup d'œil à la classe, expliqué ce que chaque méthode de classe fait avec des exemples de code.

La deuxième partie nous montrera un cas pratique d’utilisation de WP_Error gérer les erreurs lors du développement de plugins. nous allons en fait construire un plugin de formulaire de contact à mesure que nous progressons.
Restez à l'écoute - ne le manquez pas!