k-isabelle
5/31/2018 - 4:29 PM

Adding A Custom Checkbox to the Post "Publish" Box

There are times in WordPress when you need a custom field, but may not want to go through setting up a full custom meta box. Sometimes all you need is a simple checkbox that appears in the publish box. In this how-to, I’ll show you how to add a custom meta checkbox field to the existing post publish box.

Source: https://www.pmg.com/blog/wordpress-how-to-adding-a-custom-checkbox-to-the-post-publish-box/


add_action('post_submitbox_misc_actions', createCustomField);
add_action('save_post', saveCustomField);

function createCustomField () {
  $post_id = get_the_ID();

  if (get_post_type($post_id) != 'post') {
    return;
  }

  $value = get_post_meta($post_id, '_my_custom_field', true);
  wp_nonce_field('my_custom_nonce_'.$post_id, 'my_custom_nonce');
  
  ?>
  
  <div class="misc-pub-section misc-pub-section-last">
      <label>
        <input type="checkbox" value="1" <?php checked($value, true, true); ?> name="_my_custom_field" />
        <?php _e('My Custom Checkbox Field', 'pmg'); ?>
      </label>
  </div>
  
  <?php
  
}


function saveCustomField ( $post_id ) {
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
      return;
    }
    
    if (
      !isset($_POST['my_custom_nonce']) ||
      !wp_verify_nonce($_POST['my_custom_nonce'], 'my_custom_nonce_'.$post_id)
    ) {
      return;
    }
    
    if ( !current_user_can('edit_post', $post_id) ) {
      return;
    }
    if ( isset($_POST['_my_custom_field']) ) {
      update_post_meta($post_id, '_my_custom_field', $_POST['_my_custom_field']);
    } else {
      delete_post_meta($post_id, '_my_custom_field');
    }
}

// Source: https://www.pmg.com/blog/wordpress-how-to-adding-a-custom-checkbox-to-the-post-publish-box/