Cómo llamar a una función solo una vez (ámbito de variable global)
He estado tratando de encontrar la forma más eficiente de usar funciones en WordPress.
Tengo una función lenta big_slow_function() que idealmente solo debería ejecutarse una vez. Pero necesito usar el valor booleano que devuelve esta función a través de los archivos de mi tema (en header.php, page.php, sidebar.php, footer.php, loop-page.php, functions.php etc).
Me pregunto cómo hacer esto.
Intenté poner esto en mi functions.php para tratar de evitar llamar a big_slow_function() más de una vez:
global $my_important_boolean;
function $get_my_important_boolean()
{
global $my_important_boolean;
if ($my_important_boolean == NULL) // si big_slow_function() no se ha ejecutado aún
$my_important_boolean = big_slow_function();
return $my_important_boolean;
}
Y luego puse código como este a través de mis archivos del tema:
if ($get_my_important_boolean()) {
// personalizar contenido para el usuario
}
Pero big_slow_function() todavía se está ejecutando cada vez. No estoy seguro de qué estoy haciendo mal y me ha resultado difícil encontrar buena documentación sobre el ámbito de variables en WordPress. Tal vez necesite pasar una referencia/puntero a la variable.
Cualquier ayuda con este problema es muy apreciada ya que he estado luchando con esto durante algún tiempo.
function my_big_function() {
static $result;
// La función ya se ejecutó
if ( $result !== null )
return $result;
// Mucho trabajo aquí para determinar $result
$result = 'lo_que_sea';
return $result;
}
Ver también: https://stackoverflow.com/questions/6188994/static-keyword-inside-function

Perfecto. Exactamente lo que estaba buscando. Muchas gracias, Geert.
