我有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,即使选项在数据库中,并且值为“其他东西”。
答案 0 :(得分:0)
您应该在任何外部文件中包含文件wp-blog-header.php
,以便能够使用Wordpress功能。该文件位于wordpress根文件夹中。