我已将WP debug设置为true,并收到错误消息→
注意:未定义索引:勾选\\u snippet\\u类型
<p>
<input
type="radio"
<?php checked( $instance[ \'tick_the_snippet_type\' ], \'tick_snippet_4\' ); ?>
id="<?php echo $this->get_field_id( \'tick_snippet_4\' ); ?>"
name="<?php echo $this->get_field_name(\'tick_the_snippet_type\'); ?>"
value="tick_snippet_4"
/>
<label for="<?php echo $this->get_field_id( \'tick_snippet_4\' ); ?>">The Widget #3</label>
</p>
这是引发错误的行→
<?php checked( $instance[ \'tick_the_snippet_type\' ],
这有什么解决办法?
按要求更新代码→
public function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance[\'tick_the_snippet_type\'] = $new_instance[\'tick_the_snippet_type\'];
return $instance;
}
最合适的回答,由SO网友:Jacob Peattie 整理而成
每当使用数组中的值时,如$array[\'key\']
在可能的情况下\'key\'
不存在(例如第一次使用小部件)您需要在使用它之前检查它是否存在,否则在未设置它的情况下会出现错误。
您的问题是,当小部件第一次添加\'tick_the_snippet_type\'
上不存在$instance
, 所以你需要考虑这种可能性。我建议创建一个要传递给的变量checked()
其中包含tick_the_snippet_type
或默认值(如果不存在):
if ( isset( $instance[\'tick_the_snippet_type\'] ) ) {
$value = $instance[\'tick_the_snippet_type\'];
} else {
$value = false;
}
可以用
ternary operator:
$value = isset( $instance[\'tick_the_snippet_type\'] ) ? $instance[\'tick_the_snippet_type\'] : false;
然后将其用于检查:
<?php checked( $value, \'tick_snippet_4\' ); ?>