当我将主题上传到WordPress时,我会在选项页面中收到此通知:
未初始化的字符串偏移量:0
这是我的代码:
function name_of_function ( $args ) {
extract( $args );
$option_name = 'the_theme_options';
$options = get_option( $option_name );
switch ( $type ) {
case 'text':
$options[$id] = stripslashes( $options[$id] );
$options[$id] = esc_attr( $options[$id] );
echo "<input class='regular-text$class' type='text' id='$id' name='" . $option_name . "[$id]' value='$options[$id]'>";
echo ( $desc != '' ) ? "<br><span class='description'>$desc</span>" : "";
break;
当我保存时,通知消失了。
我尝试添加isset,如下所示(我刚开始收到Notice:undefined index):
$options[$id] = stripslashes( isset( $options[$id] );
错误消失了,但是无法保存。
然后我将isset添加到以下行:
$options[$id] = esc_attr( isset( $options[$id] ) );
还是没用。
我尝试删除此行,但仍然出现错误:
$options[$id] = stripslashes( $options[$id] );
我什至尝试了这个:
if ( isset( $options[$id] ) {
$options[$id] = stripslashes( $options[$id] );
}
我现在知道我尝试过的某些事情没有道理。
我一直在找几个小时。阅读一些文档。似乎找不到解决方案。
$options
在这种情况下是字符串,而不是数组。您正在尝试将其视为数组,这是行不通的。您代码中的逻辑将永远无法正常工作;目前尚不清楚您要做什么$options[$id]
。
你得到的原因
未初始化的字符串偏移量:0
是$id
未在任何地方初始化的,因此PHP将其视为0
。您说的是:“查看此字符串($ options),并在键0处获取数组值”,PHP举起手来,因为这没有任何意义。
您的各种解决方案由于其他几个原因而无法使用。stripslashes( isset( $options[$id] );
失败的原因是(1)$options[$id]
不存在,并且(2)stripslashes()
采用字符串参数,但是您将其传递给布尔值。同样的问题esc_attr( isset( $options[$id] ) );
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句