Ich habe ein WordPress-Plugin, das Einstellungen registriert wie:
register_settings("myplugin_settings","myplugin_option1");
und bei der Plugin-Aktivierung werden Optionen hinzugefügt wie:
add_option("myplugin_option1","");
Wenn ich dann die Option aktualisiere, wie:
update_option("myplugin_option1","something else");
und später versuchen, es aus der Datenbank zu bekommen:
$myoption = get_option("myplugin_option1");
get_option() gibt false zurück, sogar die Option existiert und der Wert wird aktualisiert.
Ich weiß, dass der Wert aktualisiert wird und die Option vorhanden ist, denn wenn ich die Abfrage zum Abrufen der Option ausführe, erhalte ich den Wert:
global $wpdb;
$query = 'SELECT * FROM wp_options WHERE option_name = "myplugin_option1";
$result = $wpdb->get_results($query);
Dies gibt mir den Wert zurück: “etwas anderes”
Zum Beispiel dieser Code:
$option = get_option("myplugin_option1");
if(false == $option){
global $wpdb;
$query = 'SELECT * FROM wp_options WHERE option_name = "myplugin_option1"';
$result = $wpdb->get_results($query);
}
Nachdem dieser Code ausgeführt wurde, enthält $result den Wert:
Array
(
[0] => stdClass Object
(
[option_id] => 11752
[option_name] => myplugin_option1
[option_value] => something else
[autoload] => yes
)
)
Die Option existiert also und hat einen Wert, aber get_option() gibt false zurück.
Ich habe dieses Problem nur mit 3 Optionen und nur auf einer Seite, auf der mein Plugin installiert ist. Hat jemand eine Idee, warum get_option() false zurückgibt, sogar die Option befindet sich in der Datenbank und hat den Wert “etwas anderes”.