简而言之,我的问题是:我怎样才能获得控件的
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
吗?
请参阅上面,谢谢
您能否尝试使用不同的方法来解决此问题,因为直接在 sanitize_callback 中访问控件的
input_attrs
可能会导致问题。
我们可以在定义设置和控件时直接设置这些属性,并在您的清理函数中引用它们,而不是尝试访问
input_attrs
中的 sanitize_callback
。