Se avete provato ad utilizzare una qualsiasi delle funzioni legate alle tassonomie di WordPress come get_term_link() per costruire ad esempio un menu breadcrumbs vi sarete probabilmente trovati di fronte ad un errore PHP restituito daa WordPress. Perché questo errore non viene gestito dalla classe WP_Error come negli altri casi senza bloccare il sito?
La classe WP_Error, a differenza delle tradizionali classi per la gestione degli errori del più coerente modello OOP di PHP, non ha un metodo __toString()
. Questo metodo "magico" permette la conversione della classe sotto forma di stringa testuale.
Leggendo la documentazione relativa alla funzione get_term_link()
scopriamo che:
PHP può interrompere la sua esecuzione se si cerca di visualizzare un risultato di errore
("Catchable fatal error: Object of class WP_Error could not be converted to string")
L'errore viene restituito quando una data tassonomia (categoria, tag, ecc) non esiste. La documentazione consiglia di:
usare
is_string()
per verificare il risultato della funzione qualora non si fosse sicuri che il termine esista.
Infatti se la tassonomia esiste get_term_link()
restituisce una stringa con l'URL corrispondente, altrimenti un'istanza della classe WP_Error.
Riassumendo: è sempre bene verificare l'output restituito dalle funzioni delle tassonomie di WordPress soprattutto quando l'output ha tra i valori di ritorno un errore.