Leistung mit Autoload und der Optionstabelle

11

Ich spiele mit der autoloadTischspalte herum options. Ich habe nicht viele Informationen darüber gefunden, wie die automatisch geladenen Werte verwendet werden. Ich habe a ausprobiert print_r($GLOBALS)und festgestellt, dass die automatisch geladenen Optionen in gespeichert sind $GLOBALS['wp_object_cache']->cache['options']['alloptions'].

Gibt es eine andere Möglichkeit, auf diese Variablen zuzugreifen?

Angenommen, ich muss my_optionmehrmals in verschiedenen Vorlagen (z. B. einmal in header.php, einmal in footer.php) auf eine Option zugreifen , die auf automatisches Laden eingestellt war. Welche Methode wird empfohlen?

  1. Ist es in Ordnung, dass ich es aus dem $GLOBALSArray abrufe (da der Wert bereits hier ist)
  2. Muss ich get_option('my_option')einmal verwenden und die Variable erneut globalisieren
  3. Verwenden Sie get_option('my_option')jedes Mal (was ich nicht für sinnvoll halte)
  4. Etwas anderes
RRikesh
quelle

Antworten:

22

Ich habe nicht viele Informationen darüber gefunden, wie die automatisch geladenen Werte verwendet werden.

Es gibt keinen Sonderfall für automatisch geladene Optionen. Sie werden wie normale Optionen verwendet. Lassen Sie uns jedoch herausfinden, was die autoloadSpalte der optionsTabelle bedeutet. In dieser Spalte wird festgelegt, ob eine Option in der Initialisierungsphase einer Anforderung abgerufen werden muss oder ob eine Option nur bei Bedarf abgerufen werden soll.

Aber wenn dieses Autoloading stattfindet und welche Funktion hat es? Alle Autoload- Optionen werden von der wp_load_alloptionsFunktion geladen und zwischengespeichert , die is_blog_installedzu Beginn jeder von WP verarbeiteten HTTP-Anforderung von der Funktion aufgerufen wird .

Fassen wir zusammen: Die automatisch geladene Option ist dieselbe Option, wird jedoch zu Beginn der HTTP-Anforderungsverarbeitung durch WP geladen.

Angenommen, ich muss auf eine Option zugreifen ... Welche Methode wird empfohlen?

  1. Es ist ein schlechter Ansatz, es $GLOBALSdirekt abzurufen , get_optionstattdessen zu verwenden
  2. Das Globalisieren von benutzerdefinierten Variablen ist nicht erwünscht und wird empfohlen, dies so wenig wie möglich zu tun
  3. Aus meiner Sicht ist es die beste Option für Sie
  4. Denk auch nicht an etwas anderes :)

Warum get_optionist es die beste Option, jedes Mal die Funktion zu verwenden ? Weil:

  1. Das erste und wichtigste, weil : Sie können sicher sein, dass es bei jedem Aufruf einen aktuellen Wert zurückgibt.
  2. Es wird für die zukünftige Wiederverwendung zwischengespeichert.
  3. Es ermöglicht anderen Plugins und Designs, Ihre Option durch Einbinden des option_optionnameFilters zu verknüpfen .
  4. Es wird eine Option abgerufen, wenn sie noch nicht geladen ist.
Eugene Manuilov
quelle
1
+1 sehr informative Antwort. Noch nie von dem Optionshaken gehört :)
RRikesh
@rrikesh ur willkommen, hoffe es erklärt gut genug
Eugene Manuilov