Uno dei nostri lettori più tecnici ci ha recentemente chiesto come verificare l'esistenza di una funzione PHP prima di integrare nuovo codice in un sito WordPress. Questo è importante per garantire che il tuo sito funzioni senza intoppi ed eviti errori.
Uno dei punti di forza di WordPress è la sua flessibilità e il team di WPBeginner aggiunge regolarmente funzioni personalizzate per migliorare la funzionalità del nostro sito. Comprendiamo che il codice PHP personalizzato può fallire se chiama una funzione che non esiste più o non è stata ancora definita.
In questo articolo, ti mostreremo come verificare facilmente se una funzione esiste prima di aggiungerla al tuo tema WordPress, permettendoti di evitare potenziali errori nel tuo codice.

Perché aggiungere 'Se la funzione esiste' al tuo codice personalizzato?
WordPress è scritto principalmente nel linguaggio di programmazione PHP. PHP è un linguaggio di programmazione lato server che viene eseguito sui server del tuo provider di hosting WordPress.
Poiché il codice PHP deve finire di essere eseguito prima che la pagina venga caricata nei browser dei tuoi visitatori, ci sono alcune limitazioni. Una di queste limitazioni è che se qualcosa va storto, potrebbe impedire il caricamento dell'intera pagina.
In WordPress, se una funzione mancante impedisce l'esecuzione del resto del codice, allora si interrompe e visualizza un messaggio di errore critico o errore fatale.

Cosa può far smettere improvvisamente di funzionare o scomparire una funzione?
È un errore di WordPress più comune di quanto si pensi.
Ad esempio, supponiamo che uno dei tuoi plugin WordPress includa una funzione che hai aggiunto all'area header o footer del tuo tema. La disattivazione del plugin farà scomparire la funzione e causerà l'errore critico sul tuo sito web WordPress.
Detto questo, diamo un'occhiata a come verificare facilmente se una funzione esiste prima di eseguirla nei file del tuo tema WordPress.
Verifica se una funzione esiste in WordPress
Fortunatamente, il linguaggio di programmazione PHP dispone di un metodo integrato per verificare facilmente l'esistenza di una funzione prima di eseguirla.
Supponiamo che tu abbia una funzione WordPress che visualizza l'ora corrente con informazioni sul fuso orario. Ecco un esempio di codice che puoi utilizzare per provarla.
Puoi aggiungerla direttamente al file functions.php del tuo tema, ma in questo tutorial utilizzeremo il plugin per snippet di codice WPCode perché è il modo più sicuro e semplice per aggiungere codice personalizzato in WordPress.
Innanzitutto, devi installare e attivare il Plugin Gratuito WPCode. Se hai bisogno di aiuto per farlo, consulta la nostra guida passo passo per principianti su come installare un plugin di WordPress.
Dopo l'attivazione, devi andare su Snippet di Codice » + Aggiungi Snippet nella tua bacheca di WordPress. Una volta lì, passa il mouse sopra l'opzione 'Aggiungi il tuo codice personalizzato (Nuovo Snippet)' e quindi fai clic sul pulsante 'Usa snippet' che appare.

Questo aprirà una nuova pagina in cui potrai aggiungere il tuo snippet personalizzato. Digita un titolo come 'Mostra ora corrente con fuso orario' e poi incolla lo snippet di codice sottostante nel riquadro di anteprima del codice.
//display current time with timezone
function wpb_show_timezone() {
$better_time = current_time('F j, Y g:i a e');
echo "<p>The current time is " . $better_time ."</p>";
}

Successivamente, devi selezionare 'Snippet PHP' dal menu a discesa Tipo di codice per assicurarti che il codice venga eseguito correttamente.
Infine, dovresti spostare l'interruttore Attiva su On e fare clic sul pulsante ‘Salva Snippet’ per memorizzare il tuo nuovo snippet di codice.

Per chiamare questa funzione, dovrai aggiungere il seguente codice ovunque nel tuo tema WordPress dove desideri visualizzare l'ora corrente.
<?php wpb_show_timezone(); ?>
Ecco come appariva sul nostro sito web di test.

Ora, cosa succederebbe se il codice responsabile dell'esecuzione di questa funzione scomparisse?
La chiamata alla funzione interromperà il tuo sito web in questo modo.

Aggiungiamo un controllo per assicurarci che questo codice venga eseguito solo quando la funzione esiste.
Ancora una volta, dovrai aggiungere il codice direttamente al file functions.php del tuo tema o utilizzare un plugin per snippet di codice come WPCode (consigliato):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
In questo codice, stiamo utilizzando la funzione function_exists(). Questa funzione controlla se una funzione esiste e restituisce Vero o Falso.
Abbiamo quindi aggiunto una condizione if-else per intraprendere azioni appropriate a seconda della disponibilità della funzione.
Ora, quando la funzione non è più disponibile, il codice la salterà semplicemente e WordPress sarà in grado di caricare il resto del tuo sito web normalmente.

Speriamo che questo articolo ti abbia aiutato a imparare come verificare se una funzione esiste in WordPress. Potresti anche voler consultare la nostra guida su come visualizzare facilmente il codice sul tuo sito WordPress o la nostra scelta esperta dei migliori editor di codice per Mac e Windows per la modifica dei file WordPress.
Se ti è piaciuto questo articolo, iscriviti al nostro canale YouTube per tutorial video su WordPress. Puoi anche trovarci su Twitter e Facebook.


kzain
Mi ha salvato da un mal di testa! Non potete immaginare quante volte ho aggiunto codice solo per vedere il mio tema bloccarsi perché mancava una funzione. Super facile da implementare e mantiene il mio codice pulito.
Grazie per la spiegazione chiara
Jiří Vaněk
Vorrei chiedere, se PHP mi dà un errore riguardo a una funzione PHP inesistente, una tale funzione può essere abilitata, o deve essere fatta dall'amministratore del server? Ed è possibile che la funzione dipenda dalla versione di PHP? Cioè, che una certa funzione sia disponibile in una versione di PHP ma non in un'altra?
Supporto WPBeginner
In quel caso la funzione non esiste, quindi dovresti indagare su quale sia la funzione specifica per aiutarti a trovare cosa sta causando l'errore. Dopo di che puoi verificare con il supporto cosa sta causando l'errore o rimuovere ciò che lo sta causando.
Amministratore
Rakib
davvero utile
Joana Pereira
Ottima idea Kovshenin. So esattamente cosa intendi perché stavo usando una funzione personalizzata con contact form 7 (per recuperare l'indirizzo IP su ogni modulo) e ogni volta che il plugin veniva aggiornato, il tema si rompeva.
Grazie per il suggerimento
Joana Pereira
kzain
Ci sono passato anch'io con gli aggiornamenti dei plugin che rompevano i temi! Usare function_exists() è decisamente un punto di svolta per prevenire questi mal di testa
kovshenin
Right, only please stop checking for dynamic_sidebar with function_exists in WordPress themes, unless you need to support WordPress 2.2 and below, which I *highly* doubt. Also with the user photo plugin, the whole approach seems to be wrong and redundant to me, it looks like many developers are missing the whole point of pluggable functions…. Oh well