WordPress-Problem mit get_option und update_option, wenn false im $value-Parameter übergeben wird

Lesezeit: 1 Minute

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)

Wenn PHP boolean als String umwandelt, false wird ” (leerer String) während true werden ‘1’ (String).

Da WordPress PHP-basiert ist, müssen Sie sich möglicherweise an 1/0 halten oder true/false (als String), um einen ‘Boolean’ zu unterscheiden.

1446930cookie-checkWordPress-Problem mit get_option und update_option, wenn false im $value-Parameter übergeben wird

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy