Standardmäßig wird eine Option, die über add_option oder update_option in WordPress hinzugefügt wird, automatisch bei jeder Anfrage aus der Datenbank geladen. Das ist nicht immer das, was du möchtest. Insbesondere wenn du Optionen mit viel Inhalt hast, ist es besser, sie nur zu laden, wenn notwendig.

Hintergrund

Sowohl add_option als auch update_option haben einen Parameter, um das automatische Laden der Werte zu erlauben. Dieser Wert steht bei add_option standardmäßig auf yes und für update_option auf null, was wie yes interpretiert wird. Dieser Wert repräsentiert dann automatisch den Wert der Spalte autoload in der Datenbank-Tabelle wp_options.

WordPress verwendet bei jedem Aufruf die Funktion wp_load_alloptions, um alle Optionen zu laden, bei denen der Wert der Datenbank-Spalte autoload auf yes steht.

Größe der Optionen herausfinden

Um das Laden der Optionen zu optimieren, ist das erste, dass man prüft, ob es überhaupt notwendig ist. Normalerweise, wenn die Werte eher klein sind, gibt es keinen Grund dafür, den Wert von autoload auf no zu setzen, da WordPress ansonsten exklusiv für diese Option eine zusätzliche Datenbank-Abfrage absetzen müsste, solltest du die Option benötigen.

Ich würde daher die aktuelle Größe der einzelnen Optionen auflisten lassen. Das funktioniert mit dieser MySQL-Abfrage:

SELECT		option_name, LENGTH(option_value) AS option_size
FROM		wp_options
WHERE		autoload = 'yes'
ORDER BY	option_size DESC;Code-Sprache: SQL (Structured Query Language) (sql)

Wenn du nur die Größen der Optionen deines eigenen Plugins wissen möchtest, kannst du die WHERE-Abfrage verwenden, beispielsweise indem du die Ausgabe für deinen option_name beschränkst:

SELECT		option_name, LENGTH(option_value) AS option_size
FROM		wp_19_options
WHERE		option_name LIKE '%embed_privacy_%'
AND			autoload = 'yes'
ORDER BY	option_size DESC;Code-Sprache: SQL (Structured Query Language) (sql)

Beide Male erhältst du eine Ausgabe mit den Spalten des Optionsnamens und seiner Größe, wobei die Größe die Anzahl der Zeichen ist, die gespeichert sind.

Optionen auswählen, die automatisch geladen werden sollen

Wenn deine Optionen meistens benötigt werden, lade sie immer automatisch. Aber wenn deine Optionen Daten beinhalten, die teils im Frontend und teils im Backend verwendet werden, teile diese am besten in separate Optionen auf.

Wenn deine Optionen nur im Backend erforderlich sind, kann es ein guter Grund sein, sie nur manuell im Backend zu laden.

Bitte behalte stets im Hinterkopf, dass du für jede Option, die nicht automatisch geladen aber benötigt wird, eine zusätzliche Datenbank-Abfrage ausgeführt wird. Besonders für kleine Optionen wie beispielsweise boolesche Variablen gibt es keinen Vorteil, sie manuell zu laden, da die Auswirkung für eine zusätzliche Datenbank-Abfrage wesentlich höher wäre.

Option aktualisieren

Setze in deinem Code den Wert für autoload bei add_option und update_option auf no. Bei add_option ist es der vierte Parameter, für update_option der dritte.

Bedenke, dass der autoload-Wert bei update_option in der Datenbank nur geändert wird, wenn sich auch der Wert der Option selbst ändert.

2 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert