我正在构建一个插件,我想添加一些依赖于复选框的设置。如果用户选中复选框,如何知道。我知道如何从php中的checkbox中获取数据,但在wordpress中遇到了麻烦。因为我们没有向复选框添加name属性的选项。例如,我在customizer中添加了一个复选框。
$wp_customize->add_setting('ion', array(
'sanitize_callback' => 'ion_checkbox'
));
$wp_customize->add_control(new WP_Customize_Control($wp_customize, 'ion', array(
'label' => 'Check',
'type' => 'checkbox',
'section' => 'search_submit_section',
'settings' => 'ion'
)));
正如我们所看到的,并没有添加名称属性的选项,我们将如何知道用户是否选中了复选框。我希望你能理解我的问题。提前感谢
使用($wp_customize, 'ion', array....
,ID为ion
,您可以使用获取值
$ion_checkbox_checked = get_theme_mod('ion') ? true : false;
如果复选框选中,则get_theme_mod('ion')
将返回1
else0
以下是我们免费HoverCraft主题的一个例子,灵感来自@ewwink:
<?php
$hovercraft_scroll_to_top_checked = get_theme_mod( 'hovercraft_scroll_to_top' ) ? true : false;
if ( $hovercraft_scroll_to_top_checked == true ) { ?>
<div class="scrollup-wrapper">
<a class="scrollup-link" href="#top"><i class="material-icons arrow_upward">arrow_upward</i></a>
</div><!-- scrollup-wrapper -->
<?php } ?>
关于复选框,有很多不好的例子。确保你正在将它们作为boolean进行消毒,与Twenty-Twenty主题相同:
https://wp-a2z.org/oik_api/twentytwenty_customizesanitize_checkbox/
function sanitize_checkbox( $checked ) {
return ( ( isset( $checked ) && true === $checked ) ? true : false );
}