单选按钮未显示为已选中
Radio Buttons not showing up as checked
我目前正在尝试为 Wordpress 编写主题选项页面。其中,用户可以通过单选按钮select对齐DIV。
当前,selected 选项时看起来像这样:https://gyazo.com/e27c2fc2c2e1f751ab27d98453581c52
我想知道如何解决这个问题(让单选按钮实际显示为已选中而不是已选中='checked'居中)。它可以工作并正确输出到前端,但如果没有 checked='checked',它就不会显示为已检查。如果我使用 jquery 删除 checked='checked' 它会一起删除单选按钮。
register_setting('slider_setting','slider_section1_direction');
add_settings_section( 'slider_section', '', 'slider_settings_callback', 'register_slider_settings' );
add_settings_field( 'slider_section1_direction', '', 'slider_section1_direction_callback', 'register_slider_settings', 'slider_section' );
function slider_section1_radio_buttons_callback() {
$s1_radio_buttons_settings = array(
'left' => array(
'value' => 'left',
'label' => 'Left'
),
'center' => array(
'value' => 'center',
'label' => 'Center'
),
'right' => array(
'value' => 'right',
'label' => 'Right'
),
);
return apply_filters( 'slider_section1_radio_buttons_callback', $s1_radio_buttons_settings );
}
function slider_section1_direction_callback() {
$settings = get_option('slider_section1_direction');
echo '<div class="setting">';
echo '<div class="setting-header half-width-header">';
esc_attr_e('Slider Text Alignment');
echo '</div>';
echo '<div class="setting-body" style="margin-top: 5px">';
// RADIO BUTTONS
foreach ( slider_section1_radio_buttons_callback() as $s1_button ) {
echo '<label class="description" style="margin-right: 40px">';
echo "<input type='radio'" . checked( $settings['s1_radio_buttons_settings'], $s1_button['value'] ) . " name='slider_section1_direction[s1_radio_buttons_settings]' value='" . esc_attr( $s1_button['value'] ) . "'/>";
echo $s1_button['label'];
echo '</label>';
}
echo '</div>';
echo '<div class="clear"></div>';
echo '</div>';
}
function slider_settings_callback() {
}
谢谢!
我检查了 documentation 的 checked
功能,它看起来像正常回应 checked="checked"
属性。但是,因为您想将它连接到一个字符串,所以您想要 return 该属性。幸运的是,该函数中的第三个参数可以设置为 false
以使函数改为 return 属性。因此,只需将函数的用法更改为:
checked( $settings['s1_radio_buttons_settings'], $s1_button['value'], false)
注意函数末尾的 false
。
我目前正在尝试为 Wordpress 编写主题选项页面。其中,用户可以通过单选按钮select对齐DIV。
当前,selected 选项时看起来像这样:https://gyazo.com/e27c2fc2c2e1f751ab27d98453581c52
我想知道如何解决这个问题(让单选按钮实际显示为已选中而不是已选中='checked'居中)。它可以工作并正确输出到前端,但如果没有 checked='checked',它就不会显示为已检查。如果我使用 jquery 删除 checked='checked' 它会一起删除单选按钮。
register_setting('slider_setting','slider_section1_direction');
add_settings_section( 'slider_section', '', 'slider_settings_callback', 'register_slider_settings' );
add_settings_field( 'slider_section1_direction', '', 'slider_section1_direction_callback', 'register_slider_settings', 'slider_section' );
function slider_section1_radio_buttons_callback() {
$s1_radio_buttons_settings = array(
'left' => array(
'value' => 'left',
'label' => 'Left'
),
'center' => array(
'value' => 'center',
'label' => 'Center'
),
'right' => array(
'value' => 'right',
'label' => 'Right'
),
);
return apply_filters( 'slider_section1_radio_buttons_callback', $s1_radio_buttons_settings );
}
function slider_section1_direction_callback() {
$settings = get_option('slider_section1_direction');
echo '<div class="setting">';
echo '<div class="setting-header half-width-header">';
esc_attr_e('Slider Text Alignment');
echo '</div>';
echo '<div class="setting-body" style="margin-top: 5px">';
// RADIO BUTTONS
foreach ( slider_section1_radio_buttons_callback() as $s1_button ) {
echo '<label class="description" style="margin-right: 40px">';
echo "<input type='radio'" . checked( $settings['s1_radio_buttons_settings'], $s1_button['value'] ) . " name='slider_section1_direction[s1_radio_buttons_settings]' value='" . esc_attr( $s1_button['value'] ) . "'/>";
echo $s1_button['label'];
echo '</label>';
}
echo '</div>';
echo '<div class="clear"></div>';
echo '</div>';
}
function slider_settings_callback() {
}
谢谢!
我检查了 documentation 的 checked
功能,它看起来像正常回应 checked="checked"
属性。但是,因为您想将它连接到一个字符串,所以您想要 return 该属性。幸运的是,该函数中的第三个参数可以设置为 false
以使函数改为 return 属性。因此,只需将函数的用法更改为:
checked( $settings['s1_radio_buttons_settings'], $s1_button['value'], false)
注意函数末尾的 false
。