2013-04-12 64 views
3

我不能讓多個複選框工作,爲我的生活!保存複選框組在小工具WordPress的

一切工作,包括一個複選框,但我不知道如何使多個複選框。

我想是這樣的:

我有一個自定義後類型,稱爲團隊,在這一切teammembers。我想在Team中製作一個帖子的部件。我希望複選框輸出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 teammember,我想他們都在一個widget的複選框,其中終端用戶可以選擇什麼teammember(S)來顯示。

我該怎麼做?

回答

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 
} 
+0

然後我想我還得爲$ teammember = $ instance ['teammember']做一個foreach呢?我怎樣才能把變量放在括號內?像:$ teammembers = array(「teammember_1」,「teammember_2」); foreach($ teammembers as $ teammember){$ teammember_1 = $ instance ['teammember_1']; } –

+0

你應該不需要圍繞'$ teammember = $ instance ['teammember'];''我不確定你在問變量放在方括號中。如果你保存已發佈的數組,並且只需要使用它,wordpress會在必要時自動序列化/反序列化。顯式保存和加載每個團隊成員都是過度複雜的,並且會達到難以維護的複雜程度 –

+0

@SteveBuzonas'name =「<?php echo $ this-> get_field_name('teammember');?> [] 「'很棘手我正在嘗試'name =」<?php echo $ this-> get_field_name('teammember []');?>「'失敗,現在可以運行 – destan