【发布时间】:2015-07-06 17:20:25
【问题描述】:
我有 wordpress 插件,它注册设置如下:
register_settings("myplugin_settings","myplugin_option1");
并在插件激活时添加如下选项:
add_option("myplugin_option1","");
如果我更新选项,比如:
update_option("myplugin_option1","something else");
然后尝试从数据库中获取它:
$myoption = get_option("myplugin_option1");
get_option() 返回 false,即使选项存在且值已更新。
我知道值已更新并且选项存在,因为当我运行查询以获取选项时,我得到了值:
global $wpdb;
$query = 'SELECT * FROM wp_options WHERE option_name = "myplugin_option1";
$result = $wpdb->get_results($query);
这会返回值:“其他东西”
例如这段代码:
$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);
}
这段代码执行后,$result 将包含值:
Array
(
[0] => stdClass Object
(
[option_id] => 11752
[option_name] => myplugin_option1
[option_value] => something else
[autoload] => yes
)
)
所以选项存在并且具有价值,但 get_option() 返回 false。
我只在 3 个选项中遇到此问题,并且仅在安装了我的插件的一个站点上。有谁知道为什么 get_option() 会返回 false,即使选项在数据库中并且具有“其他”值。
【问题讨论】: