It is hard to declare best practices here.
The placement depends on the content of the metabox: an editor field would be too narrow usually in the side column; two small checkboxes on the other hand will look lost in the main column.
To understand where which box will be placed, let’s use a small demo plugin:
add_action( 'add_meta_boxes_post', 'register_demo_metaboxes' );
$contexts = array ( 'normal', 'advanced', 'side' );
$priorities = array ( 'high', 'sorted', 'core', 'default', 'low' );
foreach ( $contexts as $context )
foreach ( $priorities as $priority )
"demo-$context-$priority", // id
"$context/$priority", // title
'demo_metabox_callback', // callback
NULL, // screen
function demo_metabox_callback( $object, $box )
static $count = 1;
print "number " . $count++;
side/sorted will be placed above the Publish box,
normal/high immediately after the editor,
*/low at the end of the screen and probably out of sight.
Some rules I try to follow:
- Do not move the Publish box. Users might not figure out how to move the box down. This can be very annoying.
- Try to understand how often a box might be used. A setting you turn on or off just one time per post should be very low.
- Order by importance: boxes with required fields (price of a product) should be very prominent, a description that will be extracted from the main content if empty, doesn’t have to be visible all the time.
- Some users will move the box out of sight, some might disable it completely. Prepare your callback handlers for that.
side/default if you are not sure.