如何在WordPress自定义帖子类型中保存多个复选框


How to save multiple checkboxes in WordPress custom post type

我目前有一个带有元框的自定义帖子类型。在这个元框中有几个复选框"tag1"answers"tag2"。由于某些原因,我无法同时保存这两个复选框。我可以救其中一个,但不能两个都救。有人能指引我朝正确的方向走吗?我想我必须在第8&11,但不是那么确定。感谢您的帮助!

我的工作内容:

// set a variable so we can append it to each row
$i = 1;
foreach ( $repeatable_fields as $field ) { ?>
  <label for="_tests[<?php echo $i;?>][test_tag][tag1]">
    <input type="checkbox" id="_tests[<?php echo $i;?>][test_tag][tag1]" name="_tests[<?php echo $i;?>][test_tag]" value="tag1" <?php checked( $field['test_tag'], 'tag1' ); ?> />tag1
  </label>
  <label for="_tests[<?php echo $i;?>][test_tag][tag2]">
    <input type="checkbox" id="_tests[<?php echo $i;?>][test_tag][tag2]" name="_tests[<?php echo $i;?>][test_tag]" value="tag2" <?php checked( $field['test_tag'], 'tag2' ); ?> />tag2
  </label>
<?php $i++; } ?>
<?php
  add_action('save_post', 'hhs_repeatable_meta_box_save', 10, 2);
  function hhs_repeatable_meta_box_save($post_id) {
  if ( ! isset( $_POST['hhs_repeatable_meta_box_nonce'] ) ||
  !wp_verify_nonce( $_POST['hhs_repeatable_meta_box_nonce'], 'hhs_repeatable_meta_box_nonce' ) )
  return;
  if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
  return;
  if (!current_user_can('edit_post', $post_id))
  return;
  $clean = array();
  if  ( isset ( $_POST['_tests'] ) && is_array( $_POST['_tests'] ) ) :
      foreach ( $_POST['_tests'] as $i => $test ){
      // skip the hidden "to copy" div
      if( $i == '%s' ){
          continue;
      }
  $test_tags = array ( 'tag1', 'tag2' );
      $clean[] = array(
          'test_tag' => isset( $test['test_tag'] ) && in_array( $test['test_tag'], $test_tags ) ? $test['test_tag'] : null,
          );
  }
  endif;
  // save test data
  if ( ! empty( $clean ) ) {
      update_post_meta( $post_id, 'repeatable_fields', $clean );
  } else
      delete_post_meta( $post_id, 'repeatable_fields' );
  }

您的复选框具有相同的名称_tests[<?php echo $i;?>][test_tag],您应该将[]放在它之后,您可以像数组一样接收值。