我想你已经添加了bguru_options
之前的选项。如果bguru_options
已存在,add_option()
什么都不做。要修改现有选项的值,应使用update_option()
相反
EDIT
我证实了我的想法。您正在跑步
add_option(\'bguru_options\', $default_options);
在每个
admin_init
.
bguru_options
选项在第一次运行时添加到数据库中,随后调用
add_option(\'bguru_options\', $default_options);
什么都没做。
使用update_option()
更改现有选项的值。如果该选项不存在,将创建它使用add_option()
如果你真的需要的话。例如,如果需要设置autoload=no
. 此参数不被接受update_option()
. 如果需要使用,最好在插件/主题激活期间执行此操作add_option()
如果您不确定该选项是否已存在,请使用delete_option()
通话前add_option()
.
EDIT 2
我已经完全按照原样测试了您的代码,并且已经测试过了。默认徽标URL已正确添加到数据库中
bguru_options
选项并由返回
get_option(\'bguru_options\');
:
$options=get_option(\'bguru_options\');
var_dump($options[\'bguru_logo\']);
根本没有问题。唯一的缺点是,如果您将URL字段留空,则不会设置默认徽标URL,因为我重复一下,
add_option()
在后续调用中不执行任何操作,因为
bguru_options
选项已存在。
我已经对代码进行了测试,它可以正常工作。如果它不适合你,我需要更多的信息。也许是调试日志?
不管怎样,我想告诉你怎么做get_option()
支持默认值,无需store default values in the database:
$default_options=array(
\'bguru_logo\'=>\'http://templategraphy.com/demo/businessguru/images/logo.png\',
\'bguru_vimeo\'=>\'\',
\'bguru_skype\'=>\'\',
\'bguru_dribbble\'=>\'\',
\'bguru_slide_one_image\'=>\'\',
\'bguru_slide_one_heading\'=>\'\',
\'bguru_slide_one_text\'=>\'\'
);
$bguru_options = get_option(\'bguru_options\', $bguru_options_defaults);
//Set defaults for unsaved subset in the array
$bguru_options = wp_parse_args( $bguru_options, $bguru_options_defaults );