Werden alle Optionsvariablen aus der Datenbank abgerufen und bei jeder Anforderung in den Cache geladen?
Mehr oder weniger. Wenn der get_option
Aufruf erfolgt, führt WordPress eine aufgerufene Funktion aus wp_load_alloptions
, die entweder eine zwischengespeicherte Kopie aller automatisch geladenen Optionen abruft oder alle diese Optionen in den Cache lädt. Dann wp_load_alloptions
gibt einen Array aller Optionen automatisch geladen. Wenn Ihre Option automatisch geladen wird (angegeben, wenn Sie die add_option
Funktion verwenden), wird sie Teil dieses Arrays und wird zurückgegeben.
Wenn Ihre Option nicht automatisch geladen wird, sucht WordPress im Cache nach dieser Option und gibt den Wert zurück, wenn er vorhanden ist. Wenn dies fehlschlägt, müssen Sie als letzten Fallback die Datenbank aufrufen, den Wert abrufen, den Cache festlegen und ihn dann zurückgeben.
Wird keine Option gefunden (z. B. der Optionsname war ungültig), speichert WordPress den Namen dieser Option in einem zwischengespeicherten Array mit dem Namen notoptions
. Wenn nachfolgende Aufrufe der Nicht-Option vorgenommen werden, überprüft WP zuerst das Array notoptions, damit keine Zeit für die Suche nach etwas verschwendet wird, das nicht vorhanden ist.
Wenn Sie get_option
mehrmals pro Seite anrufen möchten, sollten Sie dies nicht tun. WordPress speichert den Optionswert nach dem ersten get_option
Aufruf zwischen, unabhängig davon, ob er automatisch geladen wird oder nicht.
Überprüfen Sie die Quelle, umget_option
zu sehen, was los ist.
Nein,
Nur die Optionen, die speziell mit Autoload geladen wurden, sind auf true gesetzt
Siehe http://codex.wordpress.org/Function_Reference/add_option
Wenn es sich also um eine Option handelt, die auf jeder Seite benötigt wird, setzen Sie beim Hinzufügen zur Datenbank autoload = true.
Danach benutze get_option einfach wie gewohnt - wp übernimmt den Cache usw.
Ja,
Autoload muss nicht auf yes / true gesetzt werden. Es ist standardmäßig auf yes gesetzt: http://codex.wordpress.org/Function_Reference/add_option - letzter Funktionsparameter ($ autoload):
Wenn Sie den Wert auf no setzen, wird die Option nicht in den Cache gestellt.
quelle