2017-02-15 82 views
0

我試圖從Wordpress元框中的動態生成的複選框中保存數據。目前它幾乎可以工作 - 但正如你可以看到每個複選框都有相同的名稱和ID,以後使用它,所以它不能這樣。從循環中生成的元框複選框保存數據

這是我如何創建複選框:

<?php 
      $args = array('post_type' => 'teachers'); 
      $loop = new WP_Query($args); 
      while ($loop->have_posts()) : $loop->the_post(); 
      ?> 
      <label for="meta-checkbox-two"> 
       <input type="checkbox" name="meta-checkbox-two" id="meta-checkbox-two" value="yes" <?php if (isset ($prfx_stored_meta['meta-checkbox-two'])) checked($prfx_stored_meta['meta-checkbox-two'][0], 'yes'); ?> /> 
       <?php the_title() ?> 
      </label> 
    <?php endwhile; ?> 

和這裏的節省:

// Checks for input and saves 
if(isset($_POST[ 'meta-checkbox-two' ])) { 
    update_post_meta($post_id, 'meta-checkbox-two', 'yes'); 
} else { 
    update_post_meta($post_id, 'meta-checkbox-two', ''); 
} 

正如我所說的,幾乎工程 - 這樣可以節省一切稱爲「元複選框二」 - 這意味着一切,這不是目標。

這是我迷路的地方。我試圖讓每個名稱和ID以循環正在檢索的帖子ID結束。這裏的代碼看起來那麼:

生成複選框:

<?php 
      $args = array('post_type' => 'teachers'); 
      $loop = new WP_Query($args); 
      while ($loop->have_posts()) : $loop->the_post(); 
      ?> 
      <label for="meta-checkbox-two"> 
       <input type="checkbox" name="meta-checkbox-<?php the_ID() ?>" id="meta-checkbox-<?php the_ID() ?>" value="yes" <?php if (isset ($prfx_stored_meta['meta-checkbox-' . the_ID()])) checked($prfx_stored_meta['meta-checkbox-'] . the_ID(), 'yes'); ?> /> 
       <?php the_title() ?> 
      </label> 
    <?php endwhile; ?> 

保存他們:

$args = array('post_type' => 'teachers'); 
$loop = new WP_Query($args); 
while ($loop->have_posts()) : $loop->the_post(); 

// Checks for input and saves 
if(isset($_POST[ 'meta-checkbox-'.the_ID()])) { 
    update_post_meta($post_id, 'meta-checkbox-'.the_ID(), 'yes'); 
} else { 
    update_post_meta($post_id, 'meta-checkbox-'.the_ID(), ''); 
} 
endwhile; 

但是在第二種情況下,數據不保存。我究竟做錯了什麼?

回答

0

剛剛嘗試下面的代碼 - 而不是測試,但應該工作 - 我只是陣列改變輸入名稱,你可以看到name="meta-checkbox-two[]"那就是一點也做了獨特的輸入ID像你這樣。

<?php 
    $args = array('post_type' => 'teachers'); 
    $loop = new WP_Query($args); 
    while ($loop->have_posts()) : $loop->the_post(); 
    ?> 
     <label for="meta-checkbox-two"> 
      <input type="checkbox" name="meta-checkbox-two[]" id="meta-checkbox-two-<?php the_ID() ?>" value="yes" <?php if (isset ($prfx_stored_meta['meta-checkbox-two'])) checked($prfx_stored_meta['meta-checkbox-two'][0], 'yes'); ?> /> 
      <?php the_title() ?> 
     </label> 
<?php 
    endwhile; 
?>