我知道这可能是重复的,但我无法理解之前的问题。
我在设置页面上有一个复选框。第一次加载页面时一切都正常,如果我选中该框并保存所有内容,则一切正常。如果取消选中,则会出现以下错误:
Notice: 未定义索引:dat_checkbox_field_0
在里面.../wp-content/plugins/divi-auto-testimonials/admin/dat-options.php
在第49行
功能:
function dat_checkbox_field_0_render( ) {
$options = get_option( \'dat_settings\' );
?>
<input type=\'checkbox\' name=\'dat_settings[dat_checkbox_field_0]\' <?php checked( $options[\'dat_checkbox_field_0\'], 1 ); ?> value=\'1\'>
<?php
}
第49行是输入html。
我还收到了与此代码相同的错误:
$options = get_option( \'dat_settings\' );
if( $options[\'dat_checkbox_field_0\'] != \'1\' ) {
include_once "admin/notification.php";
}
据我所知,我需要将值设置为
null
我认为,但我不完全确定这是否正确,如果正确,如何正确。
SO网友:Otto
$options = get_option( \'dat_settings\' );
$options[\'dat_checkbox_field_0\'] = empty( $options[\'dat_checkbox_field_0\'] ) ? 0 : 1;
基本上,如果变量为“空”,意味着它没有设置,或者它等于false(零限定),那么它将被赋值为0。如果设置为true或等效值(一个符合条件),则将为其赋值1。
或者,为相同的结果反转逻辑(对于喜欢在三元语句中首先出现true的纯粹主义者):
$options[\'dat_checkbox_field_0\'] = !empty( $options[\'dat_checkbox_field_0\'] ) ? 1 : 0;
SO网友:alev
回答问题和解决问题的更好方法是让表单实际发送一个零值,并让WordPress首先用零值保存该键。
我之所以在这里发布这篇文章,是因为我使用了错误的关键字进行搜索,只找到了与这里类似的答案,这些答案可以操纵表单输出以解决Undefined index:
错误但这些解决方案仍将从选项数组中删除密钥。这可能会在其他地方造成问题。
添加另一个隐藏input
字段将实际使表单在数据库中保存零值,如下所示:
<form>
<input type=\'hidden\' value=\'0\' name=\'selfdestruct\'>
<input type=\'checkbox\' value=\'1\' name=\'selfdestruct\'>
</form>
确保将
input
高于常规值
\'0\'
与常规输入字段中的名称相同。
答案就在这里:https://stackoverflow.com/a/1992745/4688612
请把所有的信用都寄到那张海报上。