I stumbled across this nice guide on Smashing Magazine on how to add a custom meta box.
In there, I can see this code here, which has me puzzled:
/* 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 );
}
What I don’t get is the last couple of lines, where it checks if the post should be added (with add_post_meta()
) or updated (with update_post_meta()
.
I don’t get why make extra lines of code for this? I mean… update_post_meta()
adds the field if it wasn’t there.
So what’s the advantages of this code?
By the way… I found the backticks (’
) puzzling as well, so I asked about them here.