Languages: English • Español • Hrvatski • Italiano • Português do Brasil • (Add your language)
Il debug del codice PHP fa parte di ogni progetto, ma WordPress è dotato di sistemi di debug specifici progettati per semplificare il processo, così come per standardizzare tutto il codice, anche nei plugin e nei temi. Questa pagina descrive i vari strumenti di debug presenti in WordPress e come essere più produttivi durante la scrittura del proprio codice aumentandone anche la qualità e l'interoperabilità generale.
WP_DEBUG è una costante PHP (una variabile globale permanente) che può essere usata per attivare la modalità di "debug" in WordPress. Per impostazione predefinita il suo valore è false, e solitamente è impostata a true nel file wp-config.php su copie di sviluppo di WordPress.
define('WP_DEBUG', true); define('WP_DEBUG', false);
Nota: I valori true e false nell'esempio non sono inseriti tra apici (') in quanto sono valori booleani. Se si imposta WP_DEBUG a 'false' verrà interpretato come true in quanto è una stringa e non un booleano.
Non è raccomandato utilizzare WP_DEBUG o gli altri strumenti di debug su siti in produzione, il loro utilizzo deve essere limitato alle fasi di test e installazione locale.
Abilitare WP_DEBUG permetterà di mostrare tutti gli errori, le notifiche e gli avvisi di PHP. Questo probabilmente modificherà il comportamento predefinito di PHP il quale mostra solo errori fatali e/o mostra la schermata bianca della morte quando vengono raggiunti gli errori.
Mostrare tutte le notifiche e gli avvisi di PHP spesso porta a mostrare messaggi di errore per cose che funzionano correttamente ma che non seguono le convenzioni appropriate di validazione dei dati in PHP. Questi avvisi sono facili da sistemare quando il codice problematico è stato identificato; il codice risultante è quasi sempre più resistente ai bug e più facile da mantenere.
Abilitare WP_DEBUG farà anche sì che vengano mostrate le notifiche su funzioni e argomenti di WordPress deprecati che sono utilizzati nel proprio sito. Si tratta di funzioni o argomenti di funzioni che non sono ancora stati rimossi dal codice base ma la cui rimozione è prevista nel prossimo futuro. Tali avvisi spesso indicano la nuova funzione da usare al posto di quella deprecata.
WP_DEBUG_LOG è il compagno di WP_DEBUG che fa sì che tutti gli errori vengano salvati in un file di log chiamato debug.log dentro la cartella /wp-content/. Questo è utile se si desidera rivedere tutte le notifiche in seguito o si ha bisogno di vedere le notifiche generate fuori dallo schermo (es. durante una richiesta AJAX o l'esecuzone di wp-cron).
define('WP_DEBUG_LOG', true);
WP_DEBUG_DISPLAY è un altro compagno di WP_DEBUG che controlla se i messaggi di debug sono mostrati dentro il codice HTML delle pagine o no. Il valore predefinito è 'true' il quale mostra gli errori e gli avvisi appena vengono generati. Impostare questo a false nasconderà tutti gli errori. Lo si dovrebbe usare in unione con WP_DEBUG_LOG cosicché gli errori possono essere rivisti in seguito.
define('WP_DEBUG_DISPLAY', false);
SCRIPT_DEBUG è una costante correlata che forza WordPress ad usare le versioni di sviluppo dei file CSS e Javascript di base piuttosto che le versioni minimizzate che normalmente vengono caricate. Questo è utile quando si stanno effettuando test e modifiche a qualunque file .js o .css interno. Il valore predefinito è false.
define('SCRIPT_DEBUG', true);
La definizione SAVEQUERIES salva le query fatte al database in un array che può essere stampato per aiutare ad analizzarle. Se la costante viene impostata a true, ogni query viene salvata assieme alle informaazioni su quanto tempo ha impiegato per essere eseguita e quale funzione l'ha chiamata.
define('SAVEQUERIES', true);
L'array è memorizzato nella variabile globale $wpdb->queries.
NOTA: Questo avrà un impatto sulle performance del proprio sito, per cui bisogna assicurarsi di disabilitarla quando non si sta effettuando il debug.
Il codice seguente, inserito nel proprio file wp-config.php salverà tutte le notifiche e gli avvisi relativi agli errori in un file chiamato debug.log nella cartella wp-content. Gli errori verranno nascosti in modo tale da non interrompere la generazione della pagina.
// Abilitare la modalità WP_DEBUG define('WP_DEBUG', true); // Abilitare il salvataggio del log nel file /wp-content/debug.log define('WP_DEBUG_LOG', true); // Disabilitare la stampa di errori e avvisi define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors',0); // Utilizzare le versioni di sviluppo dei file JS e CSS di base // (serve solo se si stanno modificando tali file) define('SCRIPT_DEBUG', true);
Ci sono parecchi plugin ben scritti che gestiscono il debug in WordPress e mostrano maggiori informazioni sulle parti interne sia per un componente specifico sia in generale. Esempi di tali plugin sono Debug Bar con Debug Bar Console e Log Deprecated Notices.
Prima di WordPress 3.1 la costante STYLE_DEBUG si comportava in modo simile a SCRIPT_DEBUG ma riguardava i file CSS piuttosto che Javascript. Dalla versione 3.1 le due costanti sono state fuse in SCRIPT_DEBUG, che ora riguarda entrambi i tipi di file minimizzati.