2

如何更改下面的 php 以便检查初始视图,但如果用户取消选中并提交表单,则每次访问表单时都保持未选中状态(直到他们选择再次检查值)?

class My_Recent_Posts_Widget extends WP_Widget {

 function form( $instance ) {

     /* form code here...*/

    <input 
     type="checkbox" 
     class="checkbox" 
     id="<?php echo $this->get_field_id("excerpt"); ?>" 
     name="<?php echo $this->get_field_name("excerpt"); ?>"<?php checked( (bool) $instance["excerpt"], true ); ?> 
    />

    /* form code here...*/

   }
}

更新:在输入字段中放置 check="checked" 不是我想要的。原因是每次用户点击取消选中它,提交后它总是回来选中。用户取消选中该选项后,在后续访问表单时应保持未选中状态。但是,使用 checked=checked 可确保默认状态始终为选中状态,无论用户之前是否取消选中此特定项目。

我只需要检查默认值,但如果用户已经取消选中它一次,我需要它坚持以便每次打开表单时都取消选中,直到他们选择自己检查它。我相信答案在于数据库中 $instance["excerpt"] 项的状态。

4

4 回答 4

1

假设我们在这里谈论WordPress,您正在使用:

<?php checked( (bool) $instance["excerpt"], true ); ?> 

因此复选框将根据 的值进行检查$instance["excerpt"]

您应该根据自己的需要修改条件,但如果不查看更多详细信息,我们很难做到这一点。

编辑:如果值存储在$instance["excerpt"]您应该确保新用户的数据库中的默认值是选中的值(1例如)。这样,只要用户不更改它,它就会保持选中状态。

于 2012-12-06T20:58:59.830 回答
1

只需输入:checked="checked"

在您的输入标签内。

于 2012-12-06T20:49:50.087 回答
0

查看 Justin Tadlock 的这篇文章:在 WordPress 2.8 中创建小部件的完整指南

在那里,您会看到在解析表单的参数时,您可以拥有$defaults

function form( $instance ) {

    /* Set up some default widget settings. */
    $defaults = array( 
            'title'    => 'Example'
        ,   'name'     => 'John Doe'
        ,   'sex'      => 'male'
        ,   'show_sex' => true 
    );
    $instance = wp_parse_args( (array) $instance, $defaults ); 
于 2012-12-08T01:05:02.990 回答
0

只需设置选中的属性

<input 
  type="checkbox" 
  class="checkbox" 
  checked="checked" 
  id="<?php echo $this->get_field_id("excerpt"); ?>"
  name="<?php echo $this->get_field_name("excerpt"); ?>"<?php checked( (bool) $instance["excerpt"], true ); ?>
/>
于 2012-12-06T20:48:46.067 回答