add_meta_box
has a the following placement parameters:
$context
'normal', 'advanced', 'side'
$priority
'high', 'core', 'default' 'low'
For $context
the difference between normal and advanced is that normal will be placed on the page before advanced.
The $priority
determines the hierarchy but is overridden when dragged by the user. You can disable the drag and drop functionality.
Furthermore do_meta_boxes
can be used to place (output) the registered meta box, for example if you want to place the meta box above the WYSIWYG editor you can use it in a function which fires edit_form_after_title
.
If you only want to run an action once you can some trickery with did_action
, for example:
function action_trickery_115819(){
if(did_action('admin_init') === 1) {
//some action to run once
}
}
add_action( 'admin_init', 'action_trickery_115819' );
http://codex.wordpress.org/Function_Reference/do_meta_boxes
http://codex.wordpress.org/Function_Reference/did_action