当使用’
default’
=>
true并带有复选框时, 这是在定制程序预览中的意外行为。
用例
我向自定义程序添加了一个复选框控件(任何页面都没有关系):
$wp_customize->
add_setting( 'my-checkbox', array(
'type'=>
'option', 'capability' =>
'manage_options', 'transport'=>
'refresh', 'default'=>
true ///HERE I SET THE DEFAULT "TRUE"
) );
$wp_customize->
add_control( new WP_Customize_Control( $wp_customize, 'my-checkbox', array(
'label'=>
__( 'A checkbox checked by default' ), 'section' =>
'any-page', 'type'=>
'checkbox'
) ) );
我在这样的任何地方使用它:
get_option( 'my-checkbox', true );
//since its TRUE by default, here as well its TRUE
到目前为止, 如果我打开定制器, 我会使用var_dump()看到它, 在这种情况下, 可以在主页中使用它:
文章图片
在没有打开定制器的主页中, 我将得到TRUE, 所以没关系。
但是现在, 如果我在定制器中取消选中它, 则会得到以下信息:
文章图片
这是get_option(‘ my-checkbox’ , true)的默认值, 此问题在定制器预览中, 如果直接访问, 则主页将具有正确的值。
如果我希望该值为FALSE(未选中), 我需要保存2次, 第一次保存该选项, 因此没有默认值, 第二次实际保存FALSE(未选中)的值。
这是wordpress中的错误吗?对其进行更多调试, 我发现我在get_option(‘ my-checkbox’ , true)中得到了’ default’ => true。这是我在创建控件时设置的, 这是在使用自定义程序时设置的。
在这里, 我将其更改为另一种默认类型, 因此更加清晰:
get_option( 'my-checkbox', 'default' );
在首页中, 我得到正确的值:
文章图片
【在定制器屏幕上时,定制器选项未返回默认值】在定制器中, 我得到TRUE:
文章图片
这是错误的, 因为在主页中直接打开它我默认
该怎么办?我不想拉一个全局变量, 只是检查我是否在定制器中。
#1 首先, 当你创建代码并设置默认值时, 然后未将该值设置为数据库, 这就是我们需要使用get_theme_mod函数的原因。该函数需要使用第一个名称之类的参数, 第二个是你要显示的默认名称。然后, 如果将值保存到数据库, 则该函数将返回数据库值, 否则它将显示你在第二个参数中添加的默认值。我希望这能帮到你…
推荐阅读
- WordPress可视编辑器中的自定义样式不会将类应用于链接元素
- 移动子菜单的自定义样式
- linux 7
- Typora 标题的自动编号
- 第四周
- Proxmox VE 超融合集群实践真传
- linux之dos2unix命令
- Win2k8&&vCenter部署全流程
- WGCLOUD如何设置指定主机的告警值