How to set default metaboxes on user creation?

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 );
    }
}

Leave a Comment