这需要一些时间来解决。:)
你正在尝试使用$instance[\'post_types\']
在您的update()
函数,但在窗体中根本没有设置该值。我修改了一些东西,以便两者匹配。
让你的表格(大部分)保持原样update()
需要。。。
// save the widget settings
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance[\'num_posts\'] = strip_tags( $new_instance[\'num_posts\'] );
// start of the change
foreach (get_post_types() as $post_type) {
$instance[$post_type] = $new_instance[$post_type];
}
// end of the change
return $instance;
}
现在,这将使事情得以挽救,但看起来不会是这样,因为
checked()
有点不对劲,所以你的
form()
需要稍微修改一下。将列表项的代码更改为。。。
<input name="<?php echo $this->get_field_name( $post_type ); ?>" type="checkbox" <?php echo checked( $instance[$post_type] ,\'on\' ); ?> />
<label for="<?php echo $this->get_field_name( $post_type ); ?>" /><?php echo $post_type; ?></label>
请注意
checked()
函数从
checked( $this->get_field_name( $post_type ) );
到
checked( $instance[$post_type] ,\'on\' );
\'on是“true”值。
您试图使用“post\\u types”数组,但该数组与表单中的数组不匹配,因此我更改了更新函数以匹配表单。您可以通过另一种方式来实现,并更改表单以创建数组。不过我觉得我的方法更简单。
一些你真的不需要的代码,比如。。。
foreach ( get_post_types() as $post_type ) {
$instance[\'post_types\'][$post_type] = \'\';
}
如果您尝试使用“post\\u type”数组,这将导致麻烦。每次都会覆盖该变量。