问题描述
我的无头 wordpress 仪表板中有一个复选框,允许用户切换前端视图上的功能。但是,我需要控制该功能的复选框以默认选中的方式加载,即使该值还没有在数据库中。如果用户点击复选框关闭,它将取消选中该功能,然后用户可以再次选中它以选中它。
我正在尝试使用简单的三元组来检查数据库中是否存在该值,如果存在,请在复选框上设置属性 checkbed
,否则应取消选中该复选框。
但是,我在逻辑和 PHP 语法方面遇到了问题,无法使其正常工作。我错过了什么,导致仪表板呈现 checked value="1" checked='checked' />
而不是复选框本身?
$option_toggled = get_option( 'option_toggle' );
echo '<input type="checkBox" name="option_toggle" ' . $option_toggled === '1' ? 'checked' : null . ' value="1" ' . checked( get_option( 'option_toggle' ),1,false ) . ' />';
解决方法
您的问题是因为您要添加到三元组的 null
参数。要么将其设置为空字符串,要么将三元运算符括在括号中:
echo '<input type="checkbox" name="option_toggle" ' . ($option_toggled === '1' ? 'checked' : null) . ' value="1" ' . checked( get_option( 'option_toggle' ),1,false ) . ' />';
话虽如此,为什么不让 checked()
函数执行此操作,因为它似乎已经在执行此操作?
echo '<input type="checkbox" name="option_toggle" '.checked(get_option('option_toggle'),false).' />';
,
事实证明,简单的答案是在初始加载时使用 add_option( 'option_toggle','true','','yes');
设置 wp_options
表中的选项。这样,该属性最初已经存在,然后可以从那里打开/关闭。