Debug di WordPress: la guida essenziale

Pubblicato: 2021-02-11

Indipendentemente dal livello di sviluppatore di WordPress che sei, c'è un problema che dovrai affrontare costantemente: i bug. Anche gli sviluppatori più esperti non possono codificare in modo coerente in modo da non produrre bug. È un dato di fatto, il debug di WordPress in realtà può aiutarti a imparare ancora di più sulla piattaforma!

Se hai una precedente esperienza di programmazione, è probabile che tu abbia avuto errori durante la compilazione o il runtime. A meno che tu non abbia gettato la spugna e buttato via il progetto, è probabile che tu abbia passato un po' di tempo a scorrere il codice e a rintracciare il problema. La dinamica con WordPress è la stessa.

A differenza di quando si programma in un linguaggio di programmazione comune, gli errori di WordPress non vengono semplicemente stampati sulla pagina. Questo perché i log di debug spesso contengono informazioni riservate, come le credenziali dei database. WordPress invece rilascerà quei log in file sul tuo server non accessibili al pubblico.

Fortunatamente, a differenza dei computer che pesavano trenta tonnellate sviluppati dall'esercito degli Stati Uniti, non dovrai letteralmente rimuovere i bug morti dalla tua macchina per farlo! Ora che abbiamo un po' di contesto, diamo un'occhiata più tecnica a cosa succede nel processo di debug di WordPress.

Spiegazione del debug di WordPress

Come probabilmente saprai, WordPress è sviluppato utilizzando PHP. Ciò significa che la guida ufficiale di WordPress sul debug, così come la guida ufficiale al debug di PHP, saranno risorse eccellenti per aiutarti lungo la strada.

Per eseguire il debug, WordPress richiede che tu abbia una variabile PHP globale definita. Esamineremo esattamente come farlo nella prossima sezione.

È importante distinguere tra come il processo di debug di PHP è diverso dal processo di debug di WordPress. Con PHP vanilla, vengono visualizzati solo due tipi di errori per impostazione predefinita. Uno è un "errore fatale", il che significa che è così grave che la pagina non può nemmeno caricarsi. L'altro è semplicemente mostrare all'utente una pagina vuota se c'è un "errore fatale sensibile". In altre parole, PHP sa che la stampa dell'intero messaggio di errore potrebbe rappresentare un rischio per la sicurezza. Queste impostazioni possono essere facilmente modificate nello stesso PHP.

WordPress, d'altra parte, è un po' più verboso quando si tratta di debug. Se abiliti semplicemente il debug di WordPress e non lo personalizzi, verranno visualizzati tutti i livelli di errore, avviso e persino elementi informativi per gli sviluppatori. Ciò significa che verrà mostrato tutto, dagli errori fatali a un messaggio tecnico su come ottimizzare una sezione di JavaScript. Sebbene sia estremamente utile per gli sviluppatori, probabilmente non è il miglior contenuto da mostrare agli utenti.

Un'altra caratteristica unica è che riceverai una notifica sulle funzioni PHP specifiche di WordPress che sono diventate deprecate. Le funzioni che sono diventate deprecate sono quelle che potrebbero funzionare ancora adesso, ma il supporto verrà interrotto per loro in futuro. Questo in genere significa anche che esiste un modo migliore e più rapido per eseguire lo stesso processo.

Sappiamo che probabilmente non sei entusiasta di eseguire il debug di WordPress, ma è fondamentale se desideri mantenere un blog o un sito funzionale. Prima di iniziare a modificare i file, tuttavia, assicurati di utilizzare prima un plug-in di backup WordPress affidabile. In questo modo, se rendi accidentalmente inutilizzabile il tuo sito, potrai ripristinare tutto in pochi click!

Ora, diamo un'occhiata a come possiamo iniziare a girare!

Come posso abilitare il debug in WordPress?

Per avviare il processo di debug di WordPress, avremo bisogno di un paio di righe di PHP.

Avvia il tuo editor di testo preferito (a patto che il tuo editor di testo preferito non sia il Blocco note di Windows!). Se hai bisogno di prenderne uno, Notepad ++ è un editor di testo open source comunemente usato che supporta quasi tutti i linguaggi di programmazione.

Quindi, scarica una copia del tuo file wp-config.php. Non modificare il file originale! Una volta terminato, caricheremo semplicemente la versione modificata.

Dopo aver aperto wp-config.php nel tuo editor di testo, dovrai aggiungere la seguente riga di codice. Innanzitutto, cercalo per assicurarti di non averlo già; PHP diventa molto infelice se definisci la stessa variabile due volte!

 define( 'WP_DEBUG', true );

Tutto ciò che fa questa riga di codice è impostare quella variabile PHP globale chiamata WP_DEBUG al valore booleano di true.

Allo stesso modo, se si voleva trasformare la funzione di debug WordPress fuori, si era appena messo in linea opposta di codice:

 define( 'WP_DEBUG', false );

Questo attiva il debug, ma non è molto utile se non sappiamo come trovare le informazioni in output!

Dov'è il registro di debug di WordPress?

Ci sono tecnicamente due risposte a questa domanda e la risposta esatta dipende dalla tua scelta.

Come abbiamo detto, un modo è semplicemente inserire define( 'WP_DEBUG', true );. Questo utilizza le impostazioni predefinite del registro di debug di WordPress, che crea automaticamente un file se non esiste (o lo aggiunge se esiste) nella posizione wp-content/debug.log.

Tuttavia, ci sono diversi motivi per cui potresti volerlo in una posizione diversa. Ad esempio, potresti volerlo avere in una posizione in cui uno strumento di debug di terze parti può accedervi. Per personalizzare la posizione in cui viene inserito il registro di debug, puoi abilitare il debug in questo modo:

 define( 'WP_DEBUG_LOG', '/best-wp-dev/errors.log' );

Spiegazione del registro di debug di WordPress

Il livello di dettaglio delle informazioni nel registro di debug di WordPress dipende da come lo configuri. Se lo abiliti semplicemente senza ulteriori modifiche, registrerai praticamente tutti gli eventi che causano un errore, utilizzano una funzione deprecata o non sono ottimali.

Poiché WordPress è basato su PHP, il tuo registro mostrerà ogni errore PHP e avviso generato. Conterrà anche la data, l'ora e l'indirizzo IP associati a ciascun evento. Sfortunatamente, vedrai anche l'output (molto) dettagliato di PHP su molte cose, come lo stile del codice che non gli piace, la convalida dei dati che ritiene debba essere rafforzata e altro ancora.

Soprattutto per le persone che hanno appena iniziato a eseguire il debug di WordPress, guardare il file di registro può essere piuttosto opprimente. Tuttavia, dovresti ricordare che sono necessari solo pochi elementi.

Debug e registrazione

Sebbene mirino a raggiungere lo stesso obiettivo, è importante comprendere la differenza tra debug e registrazione. In altre parole, la riga define( 'WP_DEBUG', true ); fa qualcosa di completamente diverso dalla riga define( 'WP_DEBUG_LOG', true );.

In nessun caso dovresti usare define( 'WP_DEBUG', true ); su un sito accessibile al pubblico. Questo comando, se usato da solo, stamperà semplicemente i messaggi di debug. Questo non registra nulla e fornirà informazioni che potrebbero essere utilizzate per rubare dati dai tuoi siti. Garantire che questo non sia attivato, insieme a un solido plug-in di sicurezza di WordPress, vanificherà la stragrande maggioranza dei tentativi di attacchi informatici.

iThemes Security (precedentemente Better WP Security)

Debug di WordPress senza rischi per la sicurezza

Ovviamente, dovrai eseguire regolarmente il debug del tuo sito. Tuttavia, probabilmente non vuoi aggiungere e rimuovere costantemente righe di codice dal tuo file wp-config.php.

Pensando attraverso il processo, dovremo prima abilitare il debug in generale. Quindi, dovremo assicurarci di registrare gli errori per rendere possibile la loro correzione. Tuttavia, non vogliamo mostrare questi errori al grande pubblico. Ricorda che dobbiamo sopprimere la visualizzazione sia degli errori PHP standard che degli errori specifici di WordPress.

Esempio di codice di debug WordPress sicuro

Utilizzando il processo che abbiamo descritto sopra, ecco quattro righe di codice che possono iniziare a eseguire il debug in sicurezza del tuo sito!

 define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );

Le prime tre righe sopra stanno semplicemente impostando le variabili PHP globali a cui WordPress presta attenzione. Stiamo rendendo possibile il debug, l'impostazione della nostra funzionalità di registrazione e la disattivazione degli errori specifici di WordPress.

È probabile che la quarta riga sembri uscita dal campo sinistro! Questa riga serve per risolvere gli errori PHP che non sono gestiti da WordPress. È l'ultima base da coprire per garantire che gli utenti malintenzionati non abbiano accesso alle informazioni sensibili del sito.

Come posso correggere un errore di debug di WordPress?

Molto spesso, gli sviluppatori utilizzeranno quelle quattro righe di codice che abbiamo esaminato. Riscontreranno un errore, ad esempio un errore di connessione al database, ma non ci sarà nulla nel registro di debug al riguardo. Questo perché WordPress ha diverse variabili PHP globali per diversi metodi di debug.

Diamo un'occhiata ad alcuni scenari in cui dovrai aggiungere qualche riga in più al tuo file wp-config.php per eseguire correttamente il debug di WordPress.

Debug di WordPress JavaScript

Se hai un sito WordPress, c'è un'alta probabilità che utilizzi JavaScript. Per i nuovi sviluppatori, questo è essenzialmente il linguaggio che alimenta gli elementi interattivi dei siti. JavaScript è noto per essere piuttosto noioso da eseguire il debug. Questo perché i siti moderni utilizzano spesso framework sopra JavaScript, complicando ulteriormente gli avvisi e i messaggi di errore.

Sfortunatamente, questa non è l'unica cosa che rende difficile il debug di JavaScript di WordPress. Esistono due forme base di JavaScript: asincrono o "AJAX" e JavaScript normale . JavaScript normale funziona in modo lineare; non eseguirà una funzione fino all'esecuzione di quella prima che si sia conclusa. Sebbene questo possa aver funzionato nei primi giorni del web, non è adatto alle applicazioni web.

AJAX, d'altra parte, opera in background sul tuo sito WordPress. Ti consente di eseguire funzioni JavaScript e di attendere il loro output, ma non impedisce l'esecuzione di altre funzioni. Spesso è necessario impedire il blocco dei siti.

Il motivo per cui WordPress ci fa usare un'altra variabile globale PHP per dire che vogliamo eseguire il debug degli script è perché questo metodo di debug genera un'enorme quantità di dati.

Il motivo per cui WordPress ci fa usare un'altra variabile globale PHP per dire che vogliamo eseguire il debug degli script è perché questo metodo di debug genera un'enorme quantità di dati. È anche perché JavaScript e CSS vengono eseguiti sul lato client, mentre PHP viene eseguito sul lato server. Per visualizzare ogni errore che WordPress incontra a causa di JavaScript e CSS, aggiungi questa riga:

 define( 'SCRIPT_DEBUG', true);

Questo mostrerà sia gli errori JavaScript che CSS (foglio di stile). Può anche aiutare con quelle operazioni AJAX più complesse.

Risoluzione dei problemi relativi ai dati

Quasi tutti i siti Web acquisiscono informazioni da un database. WordPress ha diversi database; alcuni siti archiviano i database su server separati e altri li tengono sullo stesso server. Poiché tutte le configurazioni sono diverse, c'è sempre la possibilità che qualcosa vada storto nella connessione al database.

Se ricevi un messaggio di errore che dice che WordPress non è riuscito a connettersi a un database o noti che i dati non vengono estratti correttamente, probabilmente dovrai eseguire il debug. Semplicemente utilizzando le variabili di debug standard di WordPress, probabilmente noteresti che non verrebbe registrato nulla quando si verifica un errore relativo al database.

Questo perché WordPress partiziona gli errori relativi al database lontano da tutti gli altri errori. I messaggi di errore del database spesso contengono informazioni sensibili e gli sviluppatori di WordPress volevano assicurarsi che non divulgassi accidentalmente informazioni private al pubblico!

Per iniziare a eseguire il debug dei problemi del database di WordPress, dovrai aggiungere un'altra riga al tuo file wp-config.php:

 define( 'SAVEQUERIES', true );

Immergersi nel debug del database

A differenza delle nostre altre variabili di debug globali di WordPress, dobbiamo prestare particolare attenzione a questa. "SAVEQUERIES" dice a WordPress che vogliamo vedere ogni query eseguita e i suoi risultati restituiti. Ciò danneggerà sostanzialmente le prestazioni di tutto il sito! Fai attenzione a non eseguirlo sul tuo server nelle ore di punta e spegnilo non appena non ne hai bisogno.

Memorizza anche il suo output in modo leggermente diverso. WordPress utilizza un array PHP di stringhe a cui dovrai accedere per visualizzare le informazioni di debug del database. Si trova nella variabile globale PHP chiamata $wpdb e nell'array membro chiamato query. Puoi raggiungerlo stampando il contenuto di $wpdb->queries

Debug dei plugin di WordPress

Uno dei principali vantaggi di WordPress rispetto ad altre piattaforme è la sua ricca libreria di plugin che possono fare qualsiasi cosa. Potresti leggere questo e già avere mal di testa pensando alla logistica della necessità di cambiare costantemente il contenuto dei file. Per fortuna, alcuni plugin possono aiutarci con il debug di WordPress! Ce ne sono due particolarmente popolari che lo rendono un gioco da ragazzi.

Debug WP

Situato nel sito WordPress, questo è uno dei plugin di debug WordPress più conosciuti. In sostanza automatizza i processi di cui abbiamo già parlato. Con pochi clic dalla tua dashboard, puoi attivare e disattivare tutte queste variabili globali PHP sul tuo sito.

Quando installi questo plugin, installi anche una serie di plugin da cui dipende. Nel complesso, ti consentono di registrare e ti aiutano a interpretare gli errori che incontri.

Questo strumento è ottimo per abilitare il processo di debug, ma per eseguire il debug dei tuoi plug-in e per esaminare facilmente le informazioni di debug di WordPress relative al database, avrai bisogno anche di un altro plug-in.

La barra di debug

Come suggerisce il nome, la barra di debug è semplicemente una barra nel pannello di amministrazione del tuo sito WordPress. Può essere utilizzato in combinazione con lo strumento di debug di WP.

Dispone di strumenti per sviluppatori più avanzati, che consentono loro di visualizzare la cache, le query che sono state emesse, i risultati delle query e informazioni più avanzate. Come accennato, WordPress rilascia tutte le informazioni di debug del database in una variabile globale PHP.

Per visualizzare effettivamente tali informazioni, è necessario scorrere l'array in un file PHP personalizzato. Questo plugin ti offre una facile alternativa. Stampa tutte queste informazioni per te in un formato abbastanza facile da leggere e capire. Ti dà anche alcuni suggerimenti su come ottimizzare le chiamate al database!

Ottieni il contenuto bonus: 10 funzionalità per la scelta di un plugin per il backup di WordPress
Clicca qui

Debug di temi WordPress

Il debug dei temi di WordPress in genere comporta l'abilitazione della variabile globale PHP relativa agli script. Questo perché i temi utilizzano JavaScript e CSS lato client.

Innanzitutto, assicurati che sia un tema che hai creato. Se si tratta di un tema di terze parti che sta riscontrando problemi, dovrai contattare l'autore di quel tema. Sarebbe praticamente cercare di trovare un ago in un pagliaio per farlo da soli!

Se è il tuo tema, assicurati di aver seguito i passaggi che abbiamo discusso per abilitare il debug. Esegui qualsiasi azione ti faccia notare il bug. Puoi anche abilitare la Developer Console nel tuo browser web premendo F12. Questo mostra più messaggi di errore a livello di client che possono aiutare nel processo.

Dopo aver eseguito azioni sul tuo tema che portano a errori, consulta il registro. Dovrebbero esserci informazioni dettagliate su cosa sta causando gli errori. È probabile che ci vorranno solo alcune modifiche JavaScript e/o CSS per riportare tutto alla normalità!

Debug dell'errore critico di WordPress

Se un plug-in, un tema o altri contenuti personalizzati generano un errore che causa il fallimento del tuo sito WordPress, il tuo sito dovrebbe inviarti un'e-mail relativa all'errore. Soprattutto per i nuovi webmaster, questo può essere angosciante.

Non c'è bisogno di preoccuparsi, poiché puoi semplicemente seguire questa catena di passaggi per risolvere il problema in pochissimo tempo!

  1. Assicurati di aver attivato la modalità debug di WordPress.
  2. Accedi al registro degli errori. Dovrebbe contenere informazioni dettagliate sull'errore irreversibile. In tal caso, cerca online il codice di errore esatto.
  3. Controlla la tua versione di PHP. Se non è ciò che WordPress richiede attualmente, il semplice aggiornamento della versione PHP utilizzata dal tuo server potrebbe risolvere il problema.
  4. Se ancora non hai fortuna, passa attraverso i tuoi plugin. Spegnili tutti . Se il sito funziona, significa che un plug-in ha causato il problema. Esaminali uno per uno finché non trovi il plug-in problematico. Contatta chi l'ha scritto e chiedigli di aggiustarlo.
  5. Se non hai ancora trovato il problema, potrebbe essere un problema relativo al tema. Prova a ripristinare il tema corrente su quello predefinito di WordPress. Se il tuo sito funziona, dovrai modificare temporaneamente i temi finché l'autore non risolve il problema.
  6. Niente da fare? Segnala il tuo errore sul forum degli sviluppatori di WordPress. Ci sono molti utenti che sarebbero felici di aiutarti.

Avvolgendo

Il debug di WordPress può aiutarti a risolvere una serie di problemi che incontri. Può dirti quali plugin hanno problemi o quale problema potresti avere con un tema. Come sviluppatore di WordPress, il debug ti aiuta non solo a essere uno sviluppatore migliore, ma ti aiuta anche a produrre codice pulito e di qualità.