如何修复未初始化的字符串偏移量:WP设置API中的复选框出错

时间:2015-11-04 作者:bakar

我正在尝试创建带有复选框字段的选项页面。该复选框工作正常,但当我取消选中并保存设置时,会显示一个错误字符串

Notice: Uninitialized string offset: 0 in C:\\xampp\\htdocs\\project\\wp-content\\plugins\\test\\admin\\options.php on line 55
以下是主要设置代码:

register_setting(\'twb_settings\', \'twb_option\', \'\' );

add_settings_section(\'twb_section\', \'General Settings\', \'\', __FILE__);

add_settings_field(  \'hide_avatar\',  \'Hide Avatar\',  \'hide_vatar_fn\',  __FILE__,  \'twb_section\');

function hide_vatar_fn()
{
    $options = get_option( \'twb_option\' );      
    echo\'<input type="checkbox" id="hide_avatar" name="twb_option[hide_avatar]" value="1" \' . checked(1, $options[\'hide_avatar\'], false) . \'/>\';
}
如果我添加了消毒,请回电话register_settings, 然后错误得到替换为Undefined Variable 错误

如果我停用WP_Debug 模式下,所有错误都消失了。

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

很可能是您的$options 是字符串而不是数组。

验证$选项是否符合您期望的格式总是更好的,尤其是在开发时,您可能会切换格式,并且在这样做时懒得清理数据库。

类似于

if (!isset($options[\'hide_avatar\'])) 
  $options[\'hide_avatar\'] = 0;
可能仍然会导致一个奇怪的错误,但要准确地理解其中的位置和原因可能会更容易一些。

相关推荐

PHP variables in mysql query

关于如何使用$wpdb->insert 语法:($table, array($column=>$value),$format)?我知道这不管用:$wpdb->update(\'wp_mytable\', array(\'product\'=>\"$product\")); 这也不是:$wpdb->update(\'wp_mytable\', array(\'product\'=>$product)); 这也不是:$insert_row