This is really frustrating, I am trying to setup a custom field with a checkbox and no matter what I do the checkbox always remains checked even after unchecking it and updating the post…here is my code:
add_action('add_meta_boxes', 'jpg_affiliated');
function jpg_affiliated()
{
add_meta_box('jpg_affiliated_staff', 'Who Was Involved?', 'jpg_affiliated_staff_callback', 'post', 'normal', 'default');
}
function jpg_affiliated_staff_callback($post)
{
global $post;
$custom = get_post_custom($post->ID);
wp_nonce_field('jpg_affiliated_nonce', 'jpg_affiliated_nonce_field');
?>
Select any staff that were involved in this event and what their role was.
Select role...
Primary Shooter
Second Shooter
Third Shooter
Lighting Assistant
Photo Booth Coordinator
Marketing Coordinator
Studio Manager
JPG Team Member
Photographer
<?php
}
add_action('save_post', 'jpg_save_staff');
function jpg_save_staff($post_id)
{
// Bail if we're doing an auto save
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// if our nonce isn't there, or we can't verify it, bail
if(!isset($_POST['jpg_affiliated_nonce_field']) || !wp_verify_nonce($_POST['jpg_affiliated_nonce_field'], 'jpg_affiliated_nonce' )) return;
// if our current user can't edit this post, bail
if(!current_user_can('edit_post')) return;
// Probably a good idea to make sure your data is set
if(isset($_POST['jpg_team_member'])){update_post_meta($post_ID, 'jpg_team_member', esc_attr($_POST['jpg_team_member']));}
}
You currently have value of that field Test in your database. And in your saving syntax, you have function that updates that value only if the checkbox is checked. That means, if you uncheck checkbox and save, value will not update, and if you leave it checked, it will just save Test again.
So I have included else statement that leaves that field empty if checkbox is not set.