Come chiamare una funzione una sola volta (ambito variabile globale)
Sto cercando di capire il modo più efficiente per utilizzare le funzioni in WordPress.
Ho una funzione lenta e pesante big_slow_function() che idealmente dovrebbe essere eseguita una sola volta. Tuttavia ho bisogno di utilizzare il valore booleano restituito da questa funzione in tutti i file del mio tema (in header.php, page.php, sidebar.php, footer.php, loop-page.php, functions.php ecc).
Mi sto chiedendo come fare questo.
Ho provato a inserire questo codice nel mio functions.php per evitare di chiamare big_slow_function() più di una volta:
global $my_important_boolean;
function get_my_important_boolean()
{
global $my_important_boolean;
if ($my_important_boolean == NULL) // se big_slow_function() non è stata ancora eseguita
$my_important_boolean = big_slow_function();
return $my_important_boolean;
}
E poi ho inserito codice come questo in tutti i file del mio tema:
if (get_my_important_boolean()) {
// personalizza contenuto per l'utente
}
Ma big_slow_function() viene ancora eseguita ogni volta. Non sono sicuro di cosa sto sbagliando e ho trovato difficile trovare una buona documentazione sull'ambito delle variabili in WordPress. Forse ho bisogno di passare un riferimento/puntatore alla variabile?
Qualsiasi aiuto con questo problema è molto apprezzato dato che ci sto lottando da un po' di tempo.
function my_big_function() {
static $result;
// La funzione è già stata eseguita
if ( $result !== null )
return $result;
// Molto lavoro qui per determinare $result
$result = 'qualunque_cosa';
return $result;
}
Vedi anche: https://stackoverflow.com/questions/6188994/static-keyword-inside-function

Perfetto. Esattamente quello che stavo cercando. Molto apprezzato, Geert.
