Php 自定义程序选项在自定义程序屏幕上不返回默认值
这是自定义程序预览中的意外行为,在使用Php 自定义程序选项在自定义程序屏幕上不返回默认值,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,这是自定义程序预览中的意外行为,在使用复选框时使用'default'=>true 用例 我向定制器添加了一个复选框控件(任何页面都不重要): 我在任何地方都会这样使用它: get_option( 'my-checkbox', true ); //since its TRUE by default, here as well its TRUE 到目前为止还可以,如果我打开customizer,使用var\u dump(),在本例中,在主页中使用它,我会看到: 在主页中,在不打开定制程序的情况下
复选框时使用'default'=>true
用例
我向定制器添加了一个复选框控件(任何页面都不重要):
我在任何地方都会这样使用它:
get_option( 'my-checkbox', true ); //since its TRUE by default, here as well its TRUE
到目前为止还可以,如果我打开customizer,使用var\u dump()
,在本例中,在主页中使用它,我会看到:
在主页
中,在不打开定制程序的情况下,我将获得TRUE
,这样就可以了
但是现在如果我在customizer中取消选中它,我会得到以下结果:
这是get\u选项('my checkbox',true)中的默认值。
如果直接访问,自定义程序预览
主页
中的此问题将具有正确的值
如果我希望值为FALSE
(未选中),我需要保存2次,第一次保存选项以使其不存在默认值,第二次实际保存FALSE
(未选中)
这是wordpress中的错误吗?
调试
更详细地说,我发现我在get\u选项('my checkbox',true)中得到了'default'=>true
代码>这是我在创建控件时设置的,这是在使用自定义程序时设置的
在这里,我将其更改为另一个默认类型,因此更清楚:
get_option( 'my-checkbox', 'default' );
在主页中
,我得到了正确的值:
在customizer
中,我得到TRUE
:
这是错误的,因为在主页中
直接打开它,我会得到默认值
可以做些什么?我不想拉一个全局变量来检查我是否在自定义程序中。首先创建代码并设置默认值,然后该值未设置到数据库,这就是为什么我们需要使用get\u theme\u mod函数的原因。此函数需要输入参数,例如第一个参数是名称,第二个参数是要显示的默认参数。然后,如果值保存到数据库,则函数返回数据库值,否则它将显示在第二个参数中添加的默认值。我希望这能帮助你
get_option( 'my-checkbox', 'default' );