3

私の人生では、複数のチェックボックスを機能させることはできません!

単一のチェックボックスを含め、他のすべてが機能しますが、複数のチェックボックスを作成する方法がわかりません。

私が欲しいのは次のとおりです。

すべてのチームメンバーが含まれるチームというカスタム投稿タイプがあります。チーム内の投稿のウィジェットを作りたいです。チェックボックスでチーム内のすべての投稿を出力し、エンドユーザーが表示する人を選択できるようにします。

配列でやってみましたが、うまくいきませんでした。

私の単一のチェックボックスは次のようなものです:

public function widget( $args, $instance ) {
    $teammember = $instance['teammember'];
}

public function update( $new_instance, $old_instance ) {
    $instance['teammember'] = $new_instance['teammember'];
    return $instance;
}

public function form( $instance ) {
    $teammember = $instance['teammember'];
?>
<p>
    <input id="<?php echo $this->get_field_id('teammember'); ?>" name="<?php echo $this->get_field_name('teammember'); ?>" type="checkbox" value="Name 1" <?php checked( '1', $teammember ); ?>/> Name 1
    <input id="<?php echo $this->get_field_id('teammember'); ?>" name="<?php echo $this->get_field_name('teammember'); ?>" type="checkbox" value="Name 2" <?php checked( '1', $teammember ); ?>/> Name 2
</p>
<?php } ?>

10 人のチームメンバーがいるとしましょう。エンドユーザーがどのチームメンバーを表示するかを選択できるウィジェットにチェックボックスをすべてのメンバーに持たせたいとします。

それ、どうやったら出来るの?

4

1 に答える 1

4

あなたの例では、IDが重複しているため、入力にW3C違反があります。名前は互いに上書きされます。

$this->get_field_name('teammember');同じ結果を返し、互いにオーバーライドします。

これを配列として実現する必要があります。

<?php
    public function form($instance) {
        $teammember = $instance['teammember'];
?>
<p>
    <?php
        foreach($teammember as $id => $name) {
    ?>
    <input id="<?php echo $this->get_field_id('teammember') . $id; ?>" name="<?php echo $this->get_field_name('teammember'); ?>[]" type="checkbox" value="<?php echo $name; ?>" <?php checked('1', $name); ?> />
    <?php
        }
    ?>
</p>
<?php
}
于 2013-04-12T16:51:35.643 に答える