Recentemente, un utente ci ha selezionato come verificare l’esistenza di una funzione PHP prima di aggiungere al sito WordPress del nuovo codice che fa affidamento su di essa.
La parte migliore di WordPress è la sua flessibilità, compresa la possibilità di aggiungere funzioni personalizzate al sito web. Tuttavia, a volte il codice personalizzato può non funzionare perché la funzione a cui si riferisce non esiste più.
In questo articolo vi mostreremo come verificare facilmente se una funzione esiste prima di aggiungerla al vostro tema WordPress.
Perché aggiungere ‘If Function Exists’ al codice personalizzato?
WordPress è scritto principalmente nel linguaggio di programmazione PHP. PHP è un linguaggio di programmazione lato server che viene eseguito sui server del vostro fornitore di hosting WordPress.
Poiché il codice PHP deve terminare l’esecuzione prima che la pagina venga caricata nei browser dei 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, questo si arresta e visualizza un messaggio di errore critico o di errore irreversibile.
Cosa può far sì che una funzione smetta improvvisamente di funzionare o scompaia?
È un errore di WordPress più comune di quanto si possa pensare.
Ad esempio, supponiamo che uno dei plugin di WordPress sia dotato di una funzione che avete aggiunto all’header o al footer del tema. La disattivazione del plugin farà scomparire la funzione e causerà l’errore critico sul sito web di WordPress.
Detto questo, vediamo come verificare facilmente l’esistenza di una funzione prima di eseguirla nei file del tema di WordPress.
Selezionare l’esistenza di una funzione 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 di avere una funzione di WordPress che visualizza l’ora corrente con informazioni sul fuso orario. Ecco uno snippet di codice di esempio che potete utilizzare per provarlo.
È possibile aggiungerlo direttamente al file functions.php del tema, ma in questo tutorial utilizzeremo il plugin WPCode code snippet perché è il modo più sicuro e semplice per aggiungere codice personalizzato in WordPress.
Per prima cosa, è necessario installare e attivare il plugin gratuito WPCode. Se avete bisogno di aiuto per farlo, consultate la nostra guida per principianti, passo dopo passo, su come installare un plugin di WordPress.
Dopo l’attivazione, è necessario andare su Code Snippets ” + Add Snippet nella dashboard di WordPress. Una volta lì, passate il mouse sull’opzione “Aggiungi il tuo codice personalizzato (nuovo snippet)” e poi fate clic sul pulsante “Usa snippet” che appare.
Si aprirà una nuova pagina in cui sarà possibile aggiungere lo snippet personalizzato. Digitare un titolo come “Visualizza ora corrente con fuso orario” e incollare lo snippet di codice sottostante nel riquadro Anteprima 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, è necessario selezionare “PHP Snippet” dal menu a discesa Tipo di codice per assicurarsi che il codice venga eseguito correttamente.
Infine, si deve spostare la levetta Attiva/disattiva sulla posizione On e fare clic sul pulsante “Salva snippet” per memorizzare il nuovo snippet di codice.
Per richiamare questa funzione, è necessario aggiungere il seguente codice in qualsiasi punto del tema WordPress in cui si desidera visualizzare l’ora corrente.
<?php wpb_show_timezone(); ?>
Ecco come appariva sul nostro sito web di test.
Ora, cosa accadrebbe se il codice responsabile dell’esecuzione di questa funzione scomparisse?
La chiamata alla funzione interromperà il sito web in questo modo.
Aggiungiamo un controllo per assicurarci che il codice venga eseguito solo quando la funzione esiste.
Anche in questo caso, è necessario aggiungere il codice direttamente al file functions.php del tema o utilizzare un plugin per gli snippet di codice come WPCode (consigliato):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
In questo codice, si utilizza la funzione function_exists()
. Questa funzione seleziona se una funzione esiste e restituisce True o False.
Abbiamo quindi add-on una condizione if-else per intraprendere un’azione appropriata in base alla disponibilità della funzione.
Ora, quando la funzione non è più disponibile, il codice la salterà e WordPress sarà in grado di caricare normalmente il resto del sito web.
Speriamo che questo articolo vi abbia aiutato a capire come controllare se una funzione esiste in WordPress. Potreste anche voler consultare la nostra guida completa alla risoluzione dei problemi di WordPress o le nostre scelte degli esperti per i migliori builder di pagine WordPress trascina e rilascia.
Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.
Rakib
really helpful
Joana Pereira
Good call Kovshenin. I know exactly what you mean because I was using a custom function with contact form 7 (to retrieve the ip address on each form) and every time the plugin was updated, the theme broke.
Thanks for the tip
Joana Pereira
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