How to remove “publish metabox” from each post type

If you’re familiar with Browser Developer Tools you can quickly find the metabox ID ( which is the container div id ). In this case it’s called submitdiv. We can remove it by using the remove_meta_box() function which has a format like this:

remove_meta_box( 'metabox_id', 'post_type', 'default_position' );
remove_meta_box( 'submitdiv',  'post',      'side'             );

Here’s a list of default metabox ids. If we want to remove a certain metabox from all post types we first need to get all the post types using get_post_types() function which returns an array. Then we can loop through and remove the metabox passing the post_type into our remove_meta_box() function.

/**
 * Hide Metaboxes For All Post Types
 */
function hide_publish_metabox() {
    $post_types = get_post_types( '', 'names' );

    if( ! empty( $post_types ) ) {
        foreach( $post_types as $type ) {
            remove_meta_box( 'submitdiv', $type, 'side' );
        }
    }
}
add_action( 'do_meta_boxes', 'hide_publish_metabox' );