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.

Schreibe einen Kommentar

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