Add and create multiple meta boxes for a custom post type
Question
I’m trying to save the input from the 3 meta boxes I created. Here is my code below. What am I missing since I am only saving the smashing-post-class 3 times.
/* Fire our meta box setup function on the post editor screen. */
add_action( 'add_meta_boxes', 'smashing_add_post_meta_boxes' );
add_action( 'save_post', 'smashing_save_post_class_meta', 10, 2 );
/* Create one or more meta boxes to be displayed on the post editor screen. */
function smashing_add_post_meta_boxes() {
// sku,price, short description
add_meta_box(
'smashing-post-class', // Unique ID
esc_html__( 'SKU', 'SKU' ), // Title
'smashing_post_class_meta_box', // Callback function
'products', // Admin page (or post type)
'normal', // Context
'default' // Priority
);
add_meta_box(
'smashing-post-class1', // Unique ID
esc_html__( 'Price', 'Price' ), // Title
'smashing_post_class_meta_box', // Callback function
'products', // Admin page (or post type)
'normal', // Context
'default' // Priority
);
add_meta_box(
'smashing-post-classs2', // Unique ID
esc_html__( 'Short Description', 'Short Description' ), // Title
'smashing_post_class_meta_box', // Callback function
'products', // Admin page (or post type)
'normal', // Context
'default' // Priority
);
}
/* Display the post meta box. */
function smashing_post_class_meta_box( $post ) { ?>
<?php wp_nonce_field( basename( __FILE__ ), 'smashing_post_class_nonce' ); ?>
<p>
<label for="smashing-post-class"><?php _e( "Add meta tag", 'example' ); ?></label>
<br />
<input class="widefat" type="text" name="smashing-post-class" id="smashing-post-class" value="<?php echo esc_attr( get_post_meta( $post->ID, 'smashing_post_class', true ) ); ?>" size="30" />
</p>
<?php }
/* Save the meta box’s post metadata. */
function smashing_save_post_class_meta( $post_id, $post ) {
/* Verify the nonce before proceeding. */
if ( !isset( $_POST['smashing_post_class_nonce'] ) || !wp_verify_nonce( $_POST['smashing_post_class_nonce'], basename( __FILE__ ) ) )
return $post_id;
/* Get the post type object. */
$post_type = get_post_type_object( $post->post_type );
/* Check if the current user has permission to edit the post. */
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
return $post_id;
/* Get the posted data and sanitize it for use as an HTML class. */
$new_meta_value = ( isset( $_POST['smashing-post-class'] ) ? sanitize_html_class( $_POST['smashing-post-class'] ) : ’ );
/* Get the meta key. */
$meta_key = 'smashing_post_class';
/* Get the meta value of the custom field key. */
$meta_value = get_post_meta( $post_id, $meta_key, true );
/* If a new meta value was added and there was no previous value, add it. */
if ( $new_meta_value && '' == $meta_value )
add_post_meta( $post_id, $meta_key, $new_meta_value, true );
/* If the new meta value does not match the old value, update it. */
elseif ( $new_meta_value && $new_meta_value != $meta_value )
update_post_meta( $post_id, $meta_key, $new_meta_value );
/* If there is no new meta value but an old value exists, delete it. */
elseif ( '' == $new_meta_value && $meta_value )
delete_post_meta( $post_id, $meta_key, $meta_value );
}
0
metabox
5 months
0 Answers
50 views
0
Leave an answer
You must login or register to add a new answer .