Ich bin auf ein seltsames Problem mit gestoßen get_option
Und update_option
. Ich musste eine Option hinzufügen wp_options
Tabelle, also habe ich diese verwendet
update_option('_option_key_index', false)
, aber dies fügt der Datenbank nie einen Datensatz hinzu. Aber wenn ich passiere update_option('_option_key_index', 0)
Der Datensatz wird hinzugefügt.
Weitere Überprüfung der Kernfunktion update_action
offenbart etwas Seltsames. Der Wert false
wird eigentlich als leerer String behandelt, wohingegen true
ist nicht! Also wenn ich vorbeikomme false
für einen Schlüssel, von dem ich weiß, dass er noch nicht existiert, get_option
gibt einen leeren String zurück ($old_value = get_option( $option );
), die im folgenden Snippet verglichen werden:
if ( $value === $old_value )
return false;
kehrt immer zurück false
und daher wird der Datenbank kein Datensatz hinzugefügt!
Die Frage ist, warum WordPress den booleschen Wert behandelt false
als leere Zeichenfolge, während es für den Wert nicht gleich ist true
?
Unten ist eine Liste von Werten, mit denen ich versucht habe, und die Ergebnisse, die ich erhalten habe:
true: works. Value added is 1
1: works. Value added is 1
false: does not work - No record added
0: works - Value added is 0
'true': works. Value added is true (passed as string)
'false': works. Value added is false (passed as string)