Gestione errori di WordPress con classe I WP_Error

Anche se indossi un S sul petto, quando si parla di programmazione, gli errori si inseriranno senza dubbio nella tua applicazione. Questi errori sono causati da noi programmatori a causa di errori di codice o da utenti che non sono disposti a conformarsi ai limiti dell'applicazione o del sito Web.

Gli errori causati dagli utenti finali sono di solito più sfavorevoli di quelli del motivo del programmatore perché i dati o le informazioni immessi dall'utente sono imprevedibili.

Ad esempio, in un campo modulo email, invece di inserire un indirizzo email valido, l'utente potrebbe inserire un testo non email. Se il sito web non dispone di un solido meccanismo di gestione degli errori, l'utente può ottenere l'accesso non autorizzato alle informazioni sensibili.

Poiché non è possibile prevedere il comportamento degli utenti, è possibile programmare un sito Web o un'applicazione per rifiutare giustamente eventuali dati non validi immessi dall'utente e informare l'utente che i dati non sono validi. Questo processo è ciò che viene definito gestione degli errori

WordPress viene fornito con una classe WP_Error che semplifica notevolmente la gestione degli errori nei plugin e nello stesso WordPress.

Comprensione di WP_Error

Il WP_Error la classe consiste di due proprietà e otto metodi. Queste proprietà sono utilizzate internamente dalla classe e probabilmente non saranno necessarie queste proprietà poiché la maggior parte dell'attività che si desidera eseguire può essere eseguita utilizzando i metodi della classe.

Di seguito sono elencate le due proprietà di classe e ciò che fanno.

  • $ errori èuna matrice contenente l'elenco degli errori.
  • $ error_data è una matrice contenente l'elenco di dati per i codici di errore.

Prima di esaminare i metodi di classe, mi piacerebbe spiegare questi tre termini usati internamente dal WP_Error classe - Codice, Messaggio, Dati.

Non preoccuparti se sono difficili da capire in questo momento - le cose diventeranno più chiare mentre esaminiamo i campioni di codice nella sezione successiva.

  • Il codice è simile a un dato coppia / valore come un array: il codice in questo senso è la chiave.
  • Il Messaggio è il valore di una coppia chiave / valore salvata in errori proprietà di classe.
  • Dati, come il messaggio sopra, è il valore di una chiave ( codice ) ma salvato in error_data proprietà.

Ora ai metodi di classe e cosa fanno:

  • __costruire() è un metodo magico PHP accetta tre argomenti: codice, messaggio e dati. Passando la discussione sull'istanziazione del WP_Error class imposta il messaggio di errore.
  • get_error_codes ()restituisce un elenco di array di tutti i codici di errore, se disponibili.
  • get_error_code ()recupera il primo codice di errore e restituisce stringa, intero o vuoto se non ci sono codici di errore.
  • get_error_messages ($ code) recuperare tutti i messaggi di errore quando il codice argomento è assente o messaggi di errore che corrispondono al codice discussione. Restituisce un array di stringhe di errore in caso di successo, o array vuoto in caso di errore (se si utilizza il parametro code).
  • get_error_message ($ code)ottiene un singolo messaggio di errore. Questo otterrà il primo messaggio disponibile per il codice. Se non viene fornito alcun codice, verrà utilizzato il primo codice disponibile. Restituisce una stringa di errore. 
  • get_error_data ($ code) recuperare i dati di errore per un determinato codice di errore. Restituisce i dati o null, se non ci sono errori. 
  • aggiungi ($ code, $ message, $ data)aggiungere altri messaggi di errore all'elenco dei messaggi di errore.
  • add_data ($ data, $ code)aggiunge dati per il codice di errore. Il codice di errore può contenere solo un pezzo di dati di errore.

Come funziona la classe WP_Error

Per usare il WP_Error classe per la gestione degli errori, in primo luogo istanziare la classe seguire con l'uso del metodo di classe. È possibile aggiungere un messaggio di errore che passa il codice, Messaggio, e datisu istanziazione.

$ my_error = new WP_Error ('toy', 'il mio giocattolo preferito è dolly');

Esaminando la struttura dell'oggetto $ my_error tramite print_r () rivela:

WP_Error Object ([errors] => Array ([toy] => Array ([0] => il mio giocattolo preferito è dolly)) [error_data] => Array () 

Si noti che il nostro errore definito è memorizzato in errori proprietà di classe mentre il error_data la proprietà non ha dati.

Passando un terzo argomento sull'istanza, creare un dato con il codice (primo argomento) essendo la chiave dell'array e il terzo argomento (dati), il valore dell'array.


WP_Error Object ([errors] => Array ([toy] => Array ([0] => il mio giocattolo preferito è dolly)) [error_data] => Array ([toy] => my best))

Per aggiungere o aggiungere altri messaggi di errore all'elenco di errori, il Inserisci viene usato il metodo che accetta codice, Messaggio, e dati come argomento del metodo.

aggiungi ('gioco', 'la mia console di gioco preferita è PS4');

Passando un terzo argomento (mixed data-type) al Inserisci() metodo aggiunge un dato al codice di errore.

aggiungi ('gioco', 'la mia console di gioco preferita è PS4', 'miglior gioco');

utilizzando print_r ()  di nuovo, vediamo la struttura e le informazioni del nostro $ my_error WP_Error oggetto.

WP_Error Object ([errors] => Array ([toy] => Array ([0] => il mio giocattolo preferito è dolly) [game] => Array ([0] => la mia console di gioco preferita è PS4)) [error_data ] => Array ([toy] => miglior giocattolo [gioco] => miglior gioco))

Il add_data () metodo potrebbe anche essere utilizzato per aggiungere rigorosamente i dati per il codice di errore. Il codice di errore può contenere solo un dato di errore.

$ my_error-> add_data ('il mio miglior insegnante è lo zio Sam', 'insegnante');

Abbiamo imparato come creare un'istanza e aggiungere messaggi e dati di errore a WP_Error oggetto. Vediamo come recuperare il messaggio di errore, codice e dati.

Usando il get_error_codes () metodo restituisce un elenco di array di tutti i codici di errore.

print_r ($ my_error-> get_error_codes ()); / * restituisce Array ([0] => toy [1] => game) * /

Mentre get_error_code () restituisce solo il primo codice di errore.

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

Il get_error_messages () Recupera tutti i messaggi di errore quando il codice argomento è assente o messaggi di errore che corrispondono al codice discussione.

print_r ($ my_error-> get_error_messages ()); / * restituisce Array ([0] => il mio giocattolo preferito è dolly [1] => la mia console di gioco preferita è PS4) * /

print_r ($ my_error-> get_error_messages ('game')); / * restituisce Array ([0] => la mia console di gioco preferita è PS4) * /

Il get_error_message () restituisce un singolo messaggio di errore che corrisponde al codice. se nessun codice, restituisce il primo messaggio di errore.

print_r ($ my_error-> get_error_message ()); // il mio giocattolo preferito è dolly

Il get_error_data () restituisce i dati per il codice di errore.

print_r ($ my_error-> get_error_data ()); // miglior giocattolo

print_r ($ my_error-> get_error_data ('teacher')); // il mio miglior insegnante è lo zio Sam

Quando crei un plugin, potresti voler controllare se una variabile è un WP_Error oggetto. Qui è dove is_wp_error () torna utile.

Inoltre, potresti anche voler assicurarti che a WP_Error oggetto non contiene alcun messaggio di errore prima che un'azione venga elaborata. Ad esempio, lo snippet di codice sotto controlla se $ my_error l'oggetto non contiene errori. Se è vero, "Nessun errore, siamo a posto"è echeggiato.

if (1> count ($ my_error-> get_error_messages ())) echo "Nessun errore, siamo a posto"; 

Sommario

In questa prima parte della serie sulla gestione degli errori in WordPress utilizzando WP_Error, abbiamo dato un'occhiata alla classe per noi, spiegando cosa fa ogni metodo di classe con gli esempi di codice.

La seconda parte ci mostrerà un pratico caso d'uso nell'uso WP_Error per gestire gli errori durante lo sviluppo di plugin. mentre realizzeremo un plug-in per i moduli di contatto.
Restate sintonizzati - non mancate!