wake-up-neo.net

So rufen Sie eine Funktion nur einmal auf (globaler Variablenbereich)

Ich habe versucht, den effizientesten Weg zu finden, um Funktionen in WordPress zu nutzen.

Ich habe eine große langsame Funktion big_slow_function (), die idealerweise nur einmal ausgeführt wird. Ich muss jedoch den Booleschen Wert verwenden, der von dieser Funktion in allen Themendateien zurückgegeben wird (in header.php, page.php, sidebar.php, footer.php, loop-page.php, functions.php usw.).

Ich frage mich, wie das geht.

Ich habe versucht, dies in meine functions.php zu schreiben, um zu vermeiden, dass big_slow_function () mehrmals aufgerufen wird:

global $my_important_boolean;

function $get_my_important_boolean()
{
    global $my_important_boolean;

    if ($my_important_boolean == NULL) // if big_slow_function() has not been run yet
        $my_important_boolean = big_slow_function();

    return $my_important_boolean;
}

Und dann habe ich Code wie folgt in meine Themendateien eingefügt:

if ($get_my_important_boolean()) {
    // customize content to user
}

Aber die big_slow_function () wird immer noch ausgeführt. Ich bin mir nicht sicher, was ich falsch mache, und es fällt mir schwer, eine gute Dokumentation zum Gültigkeitsbereich von Variablen in WordPress zu finden. Vielleicht muss ich einen Verweis/Zeiger auf die Variable übergeben?

Jede Hilfe bei diesem Problem wird sehr geschätzt, da ich seit einiger Zeit damit zu kämpfen habe.

4
Ben Pearson
function my_big_function() {

    static $result;

    // Function has already run
    if ( $result !== null )
        return $result;

    // Lot of work here to determine $result
    $result = 'whatever';

    return $result;
}

Siehe auch: https://stackoverflow.com/questions/6188994/static-keyword-inside-function

13
Geert