请尝试以下代码。
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;
}
?>
<p>
<input type="checkbox" name="multval[]" value="<?php echo $id;?>" <?php echo $checked; ?> />
<?php echo $element;?>
</p>
<?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\' );
}
});