取消选中复选框时WordPress设置API错误

时间:2012-12-27 作者:CompositeUK

我正在尝试为正在开发的模板创建一些自定义选项,但当复选框(第130行)未选中时,我遇到了一个错误:

警告:E:\\composite cms\\WordPress Settings Sandbox master\\lib\\admin\\pages\\dev页中的字符串偏移量“show\\u admin\\u dev”非法。php第11行

这条线似乎抛出了错误:

if ( $options[\'show_admin_dev\'] == 1 )
可以找到整个代码on GitHub.

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

您的问题是,您没有将清理功能作为第三个参数包含在第111行注册\\u设置。如果未提供清理,WordPress将删除选项的值,并基于only 关于传入的内容$_POST. 由于浏览器根本不会发送未选中的复选框,因此您最终会$options[\'show_admin_dev\'] 未设置。

如果不在选项中,应尝试添加可增加值的净化

register_setting(
  \'ccms_developer_options\',
  \'ccms_developer_options\',
  \'ccms_developer_sanit\' 
);

function ccms_developer_sanit($newval) {
  if (!isset($newval[\'show_admin_dev\'])) 
    $newval[\'show_admin_dev\'] = 0;

  return $newval;
}

SO网友:shea

看来$options[\'show_admin_dev\'] 实际上是字符串,而不是整数。您试图将字符串与整数进行比较,这让新版本的PHP非常恼火。

设置默认选项(第69行)时show_admin_dev 设置为\'0\'. 删除此周围的引号可以防止出现错误。

您还可以转换$options[\'show_admin_dev\'] 在比较中使用intval() 功能:

if ( intval( $options[\'show_admin_dev\'] ) == 1 )

结束

相关推荐

Displaying oEmbed errors?

有时,通过oEmbed嵌入项目是不可能的,例如,当YouTube视频已禁用嵌入时。The oEmbed service will return a 401 Unauthorized, 并且不会转换代码。有没有办法通知用户这一点?当前的工作流是非直观的(至少对我来说),我更喜欢在WordPress页面上,或者更好的是,在编辑器中显示一条消息,说明对象无法嵌入。