数字字段(不透明度)的新设置/控制在 WordPress 定制器中不起作用

问题描述 投票:0回答:1

简而言之,我的问题是:我怎样才能获得控件的

input_attrs
参数值?

为了解释更多,我创建了一个新的设置/控件(我的部分及其其他设置/控件工作完美),新的设置/控件是一个编辑背景颜色不透明度的数字字段,其值从 0 更改为 1步长 0.001。当我调试代码时,我发现这一行:

$atts = $setting -> manager -> get_control( $setting->id ) -> input_attrs();
给了我一个
null
结果,因为
$setting->id
正在获取设置名称,而不是控制名称,甚至我为设置/控制,不起作用。

这是我的代码:

    //Add Header Background Color Opacity value setting
    $wp_customize->add_setting( 'header_opacity_settings' , array(
        'type' => 'option',
        'capability' => 'manage_options',
        'default' => 1,
        'sanitize_callback' => 'sanitize_color_opacity', 
    ) );

        //Add Header Background Color Opacity value control
        $wp_customize->add_control( 'header_opacity_control', array(
            'type'     => 'number',
            'label'    => __( 'Background Color Opacity' ),
            'description' => __( 'This is a custom number.' ), // Tooltip to understand what is this field made for
            'section'  => 'a_s_h_section',
            'settings' => 'header_opacity_settings',
            'input_attrs' => array( 
                'min'  => 0,
                'max'  => 1.000,
                'step' => 0.001,
            )
        ) );


    //sanitize the given opacity value 
    function sanitize_color_opacity( $number, $setting ) {
        
        $atts = $setting -> manager -> get_control( $setting->id ) -> input_attrs();
        $min = $atts['min'] ;
        $max = $atts['max'] ;
        $step = $atts['step'] ;

        $number = floor($number / $atts['step']) * $atts['step'];

        return ( $min <= $number && $number <= $max ) ? $number : $setting->default;
    }

你可以在

sanitize_color_opacity
函数中看到我在说什么,变量$atts始终是
null

你知道我怎样才能以其他方式获得

input_attrs
吗?

请参阅上面,谢谢

wordpress plugins wordpress-theming themes
1个回答
0
投票

您能否尝试使用不同的方法来解决此问题,因为直接在 sanitize_callback 中访问控件的

input_attrs
可能会导致问题。

我们可以在定义设置和控件时直接设置这些属性,并在您的清理函数中引用它们,而不是尝试访问

input_attrs
中的
sanitize_callback

© www.soinside.com 2019 - 2024. All rights reserved.