Die Standardwerte von get_option und get_theme_mod
Veröffentlicht: – 1 Kommentar
get_option
und get_theme_mod
kommen mit einem praktischen zweiten Parameter, um einen Standardwert zu definieren, wenn die Option/Theme Mod nicht verfügbar ist. Dennoch ist der Rückgabewert dieser Funktionen manchmal leer, obwohl ein Standardwert gesetzt ist. Wir schauen uns an, wie das möglich ist.
Insbesondere als ich anfing, für WordPress zu entwickeln, bin ich immer wieder über diese Standardwerte gestolpert und habe mich selbst gefragt, warum der Rückgabewert leer sein kann. Wenn man dabei in die Dokumentation von get_theme_mod
schaut, wird das auch nicht klarer. Der zweite Parameter $default
hat dort die folgende Dokumentation:
Theme modification default value.
get_theme_mod() | Function | WordPress Developer Resources
Übersetzt also: Standardwert der Theme-Anpassung
Sieht man sich dagegen die Dokumentation des gleichen zweiten Parameters $default
von get_options
an, wird es klarer:
Default value to return if the option does not exist.
get_option() | Function | WordPress Developer Resources
Übersetzt also: Standardwert, der zurückgegeben wird, wenn die Option nicht existiert.
Der Standardwert wird also nur verwendet, wenn die Option gar nicht existiert. Also selbst wenn sie in der Datenbank mit einem leeren Wert existiert, wird der leere Wert zurückgegeben, nicht der Standardwert.
Um dies zu umgehen, kannst du den kurzen ternären Operator verwenden, um den Standardwert zu erhalten, wenn die Option/Theme Mod leer ist:
$option_value = get_option( 'my_option', 'default value' ) ?: 'default value';
Code-Sprache: PHP (php)
Wenn die Option nicht existiert, gibt get_option
den Standardwert zurück, der als zweiter Parameter gesetzt ist. Wenn sie dagegen existiert, aber leer ist, wird der alternative Standardwert des kurzen ternären Operators als Wert verwendet. Damit kannst du sicher sein, dass der Wert, der in $option_value
gespeichert wird, nie leer ist.
Der Standardwert in get_theme_mod
funktioniert auf den ersten Blick identisch, aber wird zusätzlich noch durch eine sprintf
-Funktion verarbeitet, um Zugriff auf die Template-Verzeichnis-URI und die Stylesheet-Verzeichnis-URI zu bekommen. Wenn du diese also für deinen Standardwert benötigst und den ternären Operator oben verwendest, stelle sicher, dass du dieselbe sprintf
-Funktion auf diesen alternativen Standardwert anwendest.
Thanks.