我使用以下代码来确定复选框是否已勾选,然后显示一些文本(如果有/没有)作为测试。
选中时,它工作正常,文本显示。
当它被取消选中时,我会在下面的代码中注释的两行中得到下面的消息。
非法字符串偏移量“chec\\u checkbox\\u field\\u 0”
<?php
function webdev_init() {
?>
<h1>Title</h1>
<h2>WedDev Overlay Plugin Options</h2>
<form action=\'options.php\' method=\'post\'>
<h2>Checking</h2>
<?php
settings_fields( \'my_option\' );
do_settings_sections( \'checking\' );
submit_button();
?>
</form>
<?php
}
function chec_settings_init() {
register_setting( \'my_option\', \'chec_settings\' );
add_settings_section(
\'chec_checking_section\',
__( \'Your section description\', \'wp\' ),
\'chec_settings_section_callback\',
\'checking\'
);
add_settings_field(
\'chec_checkbox_field_0\',
__( \'Settings field description\', \'wp\' ),
\'chec_checkbox_field_0_render\',
\'checking\',
\'chec_checking_section\'
);
}
function chec_settings_section_callback() {
echo __( \'This section description\', \'wp\' );
}
function chec_checkbox_field_0_render() {
$options = get_option( \'chec_settings\' );
?>
//Error message on line bellow
<input type=\'checkbox\' name=\'chec_settings[chec_checkbox_field_0]\' value=\'1\' <?php if ( 1 == $options[\'chec_checkbox_field_0\'] ) echo \'checked="checked"\'; ?> />
<?php
}
$options = get_option( \'chec_settings\' );
//Error message on line bellow
if ( $options[\'chec_checkbox_field_0\'] == \'1\' ) {
echo \'Checked\';
} else {
echo \'Unchecked\';
}
最合适的回答,由SO网友:Anwer AR 整理而成
$options = get_option( \'chec_settings\' );
//Error message on line bellow
if ( is_array( $options ) && $options[\'chec_checkbox_field_0\'] == \'1\' ) {
echo \'Checked\';
} else {
echo \'Unchecked\';
}
如果未选中该值,它将不会保存在db中。因此,请检查
$options
是数组。