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...*/

   }
}

更新:checked = "checked"を入力フィールド内に配置することは、私が探しているものではありません。その理由は、ユーザーがクリックしてチェックを外すたびに、送信後に常にチェックが戻ってくるためです。ユーザーがオプションのチェックを外すと、それ以降のフォームへのアクセス時にチ​​ェックを外したままにする必要があります。ただし、checked = checkedを使用すると、ユーザーが以前にこの特定の項目のチェックを外したかどうかに関係なく、デフォルトの状態が常にチェックされていることが保証されます。

デフォルト値をチェックする必要がありますが、ユーザーが一度もチェックを外した場合は、フォームを開くたびにチェックを外して、ユーザーが自分でチェックすることを選択するまで、チェックを外す必要があります。その答えは、データベース内の$instance["excerpt"]アイテムのステータスにあると思います。

4

4 に答える 4

1

置くだけ:checked="checked"

入力タグ内。

于 2012-12-06T20:49:50.087 に答える
1

ここでWordPressについて話していると仮定すると、次のものを使用しています。

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

したがって、の値に応じてチェックボックスがオンになります$instance["excerpt"]

必要に応じて条件を変更する必要がありますが、詳細を確認せずにそれを行うのは困難です。

編集:値がに保存されている場合$instance["excerpt"]は、新しいユーザーのデータベースのデフォルト値がチェックされた値であることを確認する必要があります(1たとえば)。そうすれば、ユーザーが変更しない限り、チェックされたままになります。

于 2012-12-06T20:58:59.830 に答える
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 に答える
0

Justin Tadlockによるこの記事を確認してください:WordPress2.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 に答える