Cum să apelezi o funcție doar o singură dată (variabilă cu scop global)
Am încercat să găsesc cea mai eficientă modalitate de a utiliza funcțiile în WordPress.
Am o funcție mare și lentă big_slow_function() care ideal ar trebui rulată doar o singură dată. Dar am nevoie să folosesc valoarea boolean returnată de această funcție în toate fișierele temei mele (în header.php, page.php, sidebar.php, footer.php, loop-page.php, functions.php etc).
Mă întreb cum pot face acest lucru.
Am încercat să pun următorul cod în functions.php pentru a evita apelarea big_slow_function() mai mult de o dată:
global $my_important_boolean;
function $get_my_important_boolean()
{
global $my_important_boolean;
if ($my_important_boolean == NULL) // dacă big_slow_function() nu a fost încă rulată
$my_important_boolean = big_slow_function();
return $my_important_boolean;
}
Și apoi am pus cod similar în toate fișierele temei mele:
if ($get_my_important_boolean()) {
// personalizează conținutul pentru utilizator
}
Dar big_slow_function() încă este executată de fiecare dată. Nu sunt sigur ce fac greșit și mi-a fost greu să găsesc documentație bună despre scopul variabilelor în WordPress. Poate ar trebui să transmit o referință/pointer către variabilă?
Orice ajutor cu această problemă este foarte apreciat deoarece mă lupt cu ea de ceva timp.
function my_big_function() {
static $result;
// Funcția a fost deja executată
if ( $result !== null )
return $result;
// Multă muncă aici pentru a determina $result
$result = 'orice';
return $result;
}
Vezi și: https://stackoverflow.com/questions/6188994/static-keyword-inside-function
