Based on this Answer by t31os.
Here, all meta boxes are being set to invisible, so simply remove from the array the ones that are meant to be visible.
add_action('user_register', 'wpse_58645_set_user_metaboxes');
function wpse_58645_set_user_metaboxes( $user_id )
{
update_user_meta(
$user_id,
'metaboxhidden_post',
array(
'authordiv',
'categorydiv',
'commentstatusdiv',
'formatdiv',
'postcustom',
'postexcerpt',
'postimagediv',
'slugdiv',
'tagsdiv-post_tag',
'trackbacksdiv',
)
);
}
For registered users, running an admin_init
only once will do, but this is just the concept:
$blogusers = get_users('blog_id=1');
foreach ( $blogusers as $user )
{
if ( !get_user_meta( $user->ID, 'metaboxhidden_post', true ) )
{
update_user_meta( $user->ID, 'metaboxhidden_post', $meta_value );
}
}