如何在wordpress自定义程序中检查是否选中复选框



我正在构建一个插件,我想添加一些依赖于复选框的设置。如果用户选中复选框,如何知道。我知道如何从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')将返回1else0

以下是我们免费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 );
}

最新更新