个性化阅读
专注于IT技术分析

在定制器屏幕上时,定制器选项未返回默认值

当使用’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函数的原因。该函数需要使用第一个名称之类的参数, 第二个是你要显示的默认名称。然后, 如果将值保存到数据库, 则该函数将返回数据库值, 否则它将显示你在第二个参数中添加的默认值。我希望这能帮到你…

赞(0)
未经允许不得转载:srcmini » 在定制器屏幕上时,定制器选项未返回默认值

评论 抢沙发

评论前必须登录!