Come fare il debug su WordPress

Diciamoci la verità, spesso è frustrante trovarsi di fronte a malfunzionamenti del proprio sito e non riuscire a trovare la soluzione, ma è ancora peggio non riuscire a conoscerne la causa!
Effettivamente il debug è una delle attività più complesse, ma molto, troppo, spesso viene effettuato con superficialità, posticipando le attività di ricerca e soluzione degli eventuali errori solo dopo il presentarsi degli stessi.
Come bisognerebbe procedere dunque?
- Leggi l'articolo, ti bastano solo 2 minuti, 58 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
1 Best practise |
2 Tipi di errore |
3 Il debug in WordPress |
4 Log degli errori |
5 Altre costanti utili |
6 Commenti |
Best practise
Di norma, prima della pubblicazione di un sito web, sarebbe buona norma assicurarsi che non ci siano errori generati dal codice, che in futuro possano comprometterne il funzionamento. In generale, una funzione progettata male potrebbe svolgere il proprio dovere per tantissimo tempo senza alcun problema, salvo poi generare comportamenti inaspettati in concomitanza di un evento particolare.
Tipi di errore
Prima di addentrarci nella fase pratica, apro una piccola parentesi per i meno esperti riguardo la classificazione degli errori in PHP. Sostanzialmente, si suddividono in tre tipologie:
- Fatal error: si tratta di errori gravi che compromettono il funzionamento dell’applicazione e ne terminano immediatamente l’esecuzione;
- Warnings: si tratta di errori meno gravi o di eccezioni che l’applicazione non sa come gestire, causano malfunzionamenti e comportamenti inaspettati, ma l’esecuzione dell’applicazione non viene terminata, a differenza del caso precedente;
- Notice: non sono veri e propri errori, si tratta più che altro di avvisi che riguardano il non rispetto delle best practise di PHP.
Stanco della teoria?
Il debug in WordPress
WordPress mette a disposizione alcuni stratagemmi per mettere gli sviluppatori in condizione di “vedere” più in profondità e facilitando il lavoro di ricerca di problemi.
La prima cosa da fare, è attivare la modalità debug di WordPress, che abilita la visualizzazione a video degli errori generati da PHP, di default disabilitati su WordPress. Apri con un editor di testo il file:
wp-config.php
che trovi nella root del tuo sito e cerca l’istruzione (intorno alla riga 82):
define( ‘WP_DEBUG’, false );
sostituendo la parola false con true, ottenendo:
define( 'WP_DEBUG', true );
Fatto? Ora prova a navigare nel tuo sito, se ci sono errori li troverai a video e potrai risolverli!
Log degli errori
Ma non è finita qui… in alcuni casi, è utile che lo storico degli errori venga salvato, magari per consultarlo in seguito, come fare?
Come in precedenza, aggiungi sotto all’istruzione di cui abbiamo parlato in precedenza, la seguente costante:
define( 'WP_ DEBUG_LOG', true );
In questo modo, tutti gli errori generati dal tuo WordPress verranno salvati nel file:
wp-content/debug.log
Puoi utilizzare la modalità di log degli errori anche in presenza di chiamate AJAX, dove le funzioni PHP vengono eseguite in “background” e quindi senza la possibilità di vedere a video cosa sta succedendo, mentre con la modalità log attiva gli eventuali errori generati verranno comunque salvati nel file debug.log.
Altre costanti utili
Non sei ancora sazio? WordPress mette a disposizione anche altre costanti che combinate tra loro possono creare diversi scenari utili per il debug, vediamoli brevemente:
- WP_DEBUG_DISPLAY: se impostata a false non permette la visualizzazione a video degli errori; combinandola con WP_DEBUG_LOG impostata a true, potresti ad esempio memorizzare gli errori generati nel file debug.log, ma senza che gli utenti percepiscano nulla di anomalo.
- WP_SCRIPT_DEBUG: molti dei file JavaScript utilizzati in WordPress o in alcuni plugins sono inclusi in versione “minified” (ovvero compressi, spesso su una unica riga!) e non sono di facile lettura nel caso l’errore sia generato da qualche script. Impostando WP_SCRIPT_DEBUG a true, verrà richiamata la versione “di sviluppo” dello script (se presente) in cui è sicuramente molto più semplice effettuare una eventuale verifica.