3

为了我的一生,我无法让多个复选框起作用!

其他一切都有效,包括一个复选框,但我不知道如何制作多个复选框。

我想要的是以下内容:

我有一个名为 Team 的自定义帖子类型,其中包含所有团队成员。我想制作团队中帖子的小部件。我希望复选框输出团队中的所有帖子,最终用户可以在其中选择要显示的人。

我尝试在数组中这样做,但这没有用。

我的单个复选框是这样的:

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 回答