Visualizza gli errori PHP come avvisi di amministrazione di WordPress

Il linguaggio PHP è ampiamente adottato per molte applicazioni Web come WordPress. Potente quanto PHP, ha alcuni inconvenienti, ma una delle mie caratteristiche preferite di PHP è che visualizzerà gli errori direttamente sulla pagina web. La nuova barra degli strumenti introdotta in WordPress 3.3 interferisce con questa funzionalità. La barra degli strumenti ha una posizione assoluta fissa che copre le prime righe di errori PHP.


Opzioni per la visualizzazione degli errori

Con la nuova barra degli strumenti che copre gli errori PHP abbiamo bisogno di usare altre opzioni per il debug dei nostri temi e plugin. Fortunatamente per noi, ci sono alcune opzioni tra cui scegliere.


plugin

Fin dall'inizio del nuovo plug-in per gli strumenti per gli strumenti, gli sviluppatori hanno creato alcuni plugin che possono aiutarci a risolvere questo problema. Qui ci sono un paio di plugin che puoi usare per disabilitare la barra degli strumenti.

  • Testa di amministrazione della vecchia scuola
  • Nascondi il plugin della barra degli strumenti
  • Pulisci rimozione barra amministrativa
  • Barra degli amministratori di WordPress migliorata

Tutti questi plugin offrono funzionalità diverse, ma tutti ci permettono di disabilitare la barra degli strumenti. Questo ci consentirà di visualizzare eventuali errori PHP che arrivano sulla nostra strada. La cosa bella con questi plugin è che possono essere abilitati e disabilitati quando necessario.


Registrazione errori

La soluzione per gli errori PHP suggerita dal Team di WordPress Core consiste nell'utilizzare la registrazione degli errori. Se stai sviluppando su WordPress dovresti già conoscere la costante WP_DEBUG definita nel file wp-config.php. È inoltre possibile definire la costante WP_DEBUG_LOG. Ecco un esempio che il codice WordPress fornisce per abilitare il registro di debug.

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

Ciò produrrà eventuali errori PHP in un file denominato debug.log nella cartella del contenuto wp. Errori di registrazione come questo ha degli alti e bassi. Quando si lavora su un plug-in commerciale o quando si lavora in un ambiente di team in cui sono necessari errori di registrazione. Questa è la soluzione migliore per tracciare i tuoi errori, ma quando si sviluppa un plugin o un tema su una scala più piccola, questo non è pratico. Quando tutto ciò che devi fare è assicurarti che tutte le tue I siano puntate e le T siano incrociate. Può essere molto frustrante dover aprire, chiudere e riaprire il registro degli errori ogni volta che si apporta una modifica.


Visualizza errori come avvisi di amministrazione

Il metodo che ho adottato, è quello di generare errori PHP come avvisi admin. Penso che questa sia la soluzione migliore finora. Non sono necessari plug-in, è più conveniente della registrazione degli errori e può essere lasciato sul posto senza interferire con il layout e il design dell'Area Amministratore o dei temi di WordPress.

Il codice utilizzato per ottenere questo risultato è semplice, e non riesco a capire perché non si tratti di una parte di WordPress Core. Il seguente codice dovrebbe essere inserito nel tuo file functions.php o nel tuo plugin di funzionalità.

 function admin_alert_errors ($ errno, $ errstr, $ errfile, $ errline) $ errorType = array (E_ERROR => 'ERROR', E_CORE_ERROR => 'CORE ERROR', E_COMPILE_ERROR => 'COMPILE ERROR', E_USER_ERROR => 'ERRORE UTENTE ', E_RECOVERABLE_ERROR =>' RECOVERABLE ERROR ', E_WARNING =>' WARNING ', E_CORE_WARNING =>' CORE WARNING ', E_COMPILE_WARNING =>' COMPILE WARNING ', E_USER_WARNING =>' USER WARNING ', E_NOTICE =>' NOTICE ', E_USER_NOTICE = > 'USER NOTICE', E_DEPRECATED => 'DEPRECATED', E_USER_DEPRECATED => 'USER_DEPRECATED', E_PARSE => 'PARSING ERROR'); if (array_key_exists ($ errno, $ errorType)) $ errname = $ errorType [$ errno];  else $ errname = 'UNKNOWN ERROR';  ob_start ();?> 

Errore: [] in linea

Esistono quattro argomenti che vengono passati alla funzione admin_alert_errors ().

  • $ errno: emette il livello dell'errore generato. Ad ogni tipo di errore è associato un numero. $ errno mostra quel numero.
  • $ errstr: emette il messaggio di errore.
  • $ errfile: restituisce il nome del file che presenta l'errore.
  • $ errline: emette la riga che presenta l'errore.

L'array $ errorType definisce il titolo utilizzato per ogni tipo di errore.

per esempio. AVVERTIMENTO Errore: [2] include (wuzup) [function.include]:

Questi possono essere tutto ciò che vuoi. Può dire "Wuzup G, hai incasinato qualcosa".

per esempio. AVVERTIMENTO Wuzup G, hai incasinato qualcosa: [2] include (wuzup) [function.include]:

Non consiglio di usarlo per qualsiasi cosa tu stia realizzando per un cliente a meno che non abbia un buon senso dell'umorismo, ma ti viene l'idea.

L'istruzione IF verifica se il tipo di errore corrisponde a una qualsiasi delle costanti di errore definite nell'array $ errorType. In caso contrario, il titolo dell'errore verrà visualizzato come "ERRORE SCONOSCIUTO"

L'ultima parte della funzione è ciò che verrà emesso. La classe errore è una classe predefinita incorporata in WordPress utilizzata per lo stile degli avvisi di amministratore degli errori.

Per iniziare la funzione admin_alert_errors () userai la funzione set_error_handler (). Il primo parametro è la funzione utilizzata per visualizzare gli errori. In questo caso la funzione admin_alert_errors (). Il prossimo set di parametri sono le costanti di errore PHP che si desidera visualizzare.

Se hai esperienza nell'affrontare la gestione degli errori, noterai che E_STRICT non è incluso. Questo perché ci sono alcuni errori che vengono dal WordPress Core. Non sono sicuro se questo è qualcosa mancato dal Core WordPress Team o se è di progettazione, ma in entrambi i casi non è necessario visualizzare questi errori. Inoltre, usare E_ALL invece di elencare tutte le costanti di errore non sembra funzionare. Se si utilizza E_ALL non tutti gli errori verranno visualizzati come avvisi admin.

Nota: Ciò non influisce sul modo in cui gli errori vengono visualizzati sul frontend del tuo sito. Solo nelle pagine di amministrazione.

un'altra nota: Quando ho installato i dati di test di WordPress. Io ricevo a DEPRECATO errore per il file class-simplepie.php.


Conclusione

Bene, spero che questo ti aiuti con quegli fastidiosi errori PHP. Se qualcuno ha un'altra soluzione, per favore pubblicala nei commenti. Mi piacerebbe vedere cosa ti è venuto in mente.