Remove the Featured Image Meta Box

The question:

How can I remove the Featured Image meta box? I’ve tried using the remove_meta_box function and specifying the boxes ID but it doesn’t seem to work like it does for the other native meta boxes.

Here is the specific code I tried:

add_action( 'admin_menu', 'remove_thumbnail_box' );

function remove_thumbnail_box() {
    remove_meta_box( 'postimagediv', 'post', 'side' );
}

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

I haven’t had time to test this but this looks like it should work for you.

add_action('do_meta_boxes', 'remove_thumbnail_box');

function remove_thumbnail_box() {
    remove_meta_box( 'postimagediv','post','side' );
}

Check this for more info.

Edit: The main change here is that you need to attach the function to do_meta_boxes instead of admin_menu

Method 2

The post thumbnail is added to a post type as something this post type supports. If you want to remove post thumbnail functionality from a post type, you can call remove_post_type_support(). Regular posts are also defined as custom post types, so it should work for them too.

add_action( 'init', 'wpse4936_init', 100 /* Something high, to make sure all post types are registered */ );
function wpse4936_init()
{
    remove_post_type_support( 'post', 'thumbnail' );
    // Or remove it for all registerd types
    foreach ( get_post_types() as $post_type ) {
        remove_post_type_support( $post_type, 'thumbnail' );
    }
}

Method 3

add_action('do_meta_boxes', 'remove_thumbnail_box');
function remove_thumbnail_box($post_type) {
    remove_meta_box( 'postimagediv', 'post.php', 'side' );
}

WordPress seems to only disable the featured images when calling action do_meta_boxes also use “post.php” as the post type instead of “post”, I don’t know why this is as it contradicts the documentation. Warning the do_meta_boxes seems to fire before function wp_get_current_user() becomes available so you won’t be able to disable based on user type, it’s all or nothing. Maybe someone else knows of a work around.

Method 4

You can either remove it immediately after creating the custom post type or remove it later on using a hook like init.

Option #1: Remove it immediately after creating your custom post type:

$args = []; //your args here

register_post_type('my_post_type', $args);

remove_post_type_support('my_post_type', 'thumbnail');

Option #2: Remove it from an existing post type:

function remove_thumbnail_support()
{
    remove_post_type_support('my_post_type', 'thumbnail');
}

add_action('init', 'remove_thumbnail_support', 11);


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment