Speichern Sie Metabox mit mehreren Checkbox-Array

Ich habe eine Anforderung, bei der die Anzahl der Kontrollkästchen in der Metabox nicht festgelegt ist. Wäre es behoben worden, hätte ich jedem der Tutorials im Internet folgen können, die update_post_meta() dass ich jedes Kontrollkästchen update_post_meta() und es mit update_post_meta() speichern update_post_meta()

In meinem Fall habe ich das Kontrollkästchen in Array-Notation als name = 'multval[]' da die Anzahl der Checkboxen unbekannt ist.

Ich verstehe nicht, wie zu verwenden ist:

  1. get_post_meta()
  2. checked()
  3. update_post_meta()

wenn es darum geht, auf Checkboxen zuzugreifen, wenn es als Array benannt ist.

Der Code:

  

<input type = "checkbox" name = "multval[]" value = //How to use checked() function in case of //multiple checkbox as arrays >

<?php } } add_action( 'save_post', function( $post_id ) { $is_autosave = wp_is_post_autosave( $post_id ); $is_revision = wp_is_post_revision( $post_id ); $is_valid_nonce = ( isset( $_POST[ 'mam_nonce' ] ) && wp_verify_nonce( $_POST[ 'mam_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false'; if ( $is_autosave || $is_revision || !$is_valid_nonce ) { return; } /*How to run a loop to save values for each checkbox?*/ });

Solutions Collecting From Web of "Speichern Sie Metabox mit mehreren Checkbox-Array"

Probieren Sie den folgenden Code aus.

 add_action( 'add_meta_boxes', function() { add_meta_box( 'custom-metabox', 'Select values', 'fill_metabox', 'post', 'normal' ); }); function fill_metabox( $post ) { wp_nonce_field( basename(__FILE__), 'mam_nonce' ); // How to use 'get_post_meta()' for multiple checkboxes as array? $postmeta = maybe_unserialize( get_post_meta( $post->ID, 'elements', true ) ); // Our associative array here. id = value $elements = array( 'apple' => 'Apple', 'orange' => 'Orange', 'banana' => 'Banana' ); // Loop through array and make a checkbox for each element foreach ( $elements as $id => $element) { // If the postmeta for checkboxes exist and // this element is part of saved meta check it. if ( is_array( $postmeta ) && in_array( $id, $postmeta ) ) { $checked = 'checked="checked"'; } else { $checked = null; } ?> 

/> < ?php echo $element;?>

< ?php } } add_action( 'save_post', function( $post_id ) { $is_autosave = wp_is_post_autosave( $post_id ); $is_revision = wp_is_post_revision( $post_id ); $is_valid_nonce = ( isset( $_POST[ 'mam_nonce' ] ) && wp_verify_nonce( $_POST[ 'mam_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false'; if ( $is_autosave || $is_revision || !$is_valid_nonce ) { return; } // If the checkbox was not empty, save it as array in post meta if ( ! empty( $_POST['multval'] ) ) { update_post_meta( $post_id, 'elements', $_POST['multval'] ); // Otherwise just delete it if its blank value. } else { delete_post_meta( $post_id, 'elements' ); } });