We often add custom meta boxes to a page or post in order to save specific kinds of data. In some cases, the best place to add those fields really isn’t in some box that gets added to the end of the page. The option needs to be in a bit more prominent location.
Fortunately, it’s possible to add text or form elements to the “Publish” meta box.
add_action( 'post_submitbox_misc_actions', 'article_or_box' );
add_action( 'save_post', 'save_article_or_box' );
function article_or_box() {
global $post;
if (get_post_type($post) == 'post') {
echo '<div class="misc-pub-section misc-pub-section-last" style="border-top: 1px solid #eee;">';
wp_nonce_field( plugin_basename(__FILE__), 'article_or_box_nonce' );
$val = get_post_meta( $post->ID, '_article_or_box', true ) ? get_post_meta( $post->ID, '_article_or_box', true ) : 'article';
echo '<input type="radio" name="article_or_box" id="article_or_box-article" value="article" '.checked($val,'article',false).' /> <label for="article_or_box-article" class="select-it">Article</label><br />';
echo '<input type="radio" name="article_or_box" id="article_or_box-box" value="box" '.checked($val,'box',false).'/> <label for="article_or_box-box" class="select-it">Box</label>';
echo '</div>';
}
}
function save_article_or_box($post_id) {
if (!isset($_POST['post_type']) )
return $post_id;
if ( !wp_verify_nonce( $_POST['article_or_box_nonce'], plugin_basename(__FILE__) ) )
return $post_id;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
if ( 'post' == $_POST['post_type'] && !current_user_can( 'edit_post', $post_id ) )
return $post_id;
if (!isset($_POST['article_or_box']))
return $post_id;
else {
$mydata = $_POST['article_or_box'];
update_post_meta( $post_id, '_article_or_box', $_POST['article_or_box'], get_post_meta( $post_id, '_article_or_box', true ) );
}
}
What I needed at one time was a way to mark a post that would determine whether it would be displayed in a regular article style, or in a special box style. Nowadays, I can use post formats. But the point is, you could put other options there. Perhaps an expiration date field.
Thanks a bunch mate, this helps out a lot! π
Hi, how do I add edit link visibility and timestamp as in for example? Do you have any idea?
Thank’s
Thanks Kailey π
I noticed that it looks a bit better if you remove the inline styling for the top of the box.
You rule! I spent about 20 mins trying to work out where the heck that hook was, then stumble across your post.
Then on starting to write this comment, I see that I have had this problem previously and event commented here π
π