Using WordPress ‘default_hidden_meta_boxes’ PHP filter

The default_hidden_meta_boxes WordPress PHP filter allows you to modify the default list of hidden meta boxes on the admin screen.

Usage

add_filter('default_hidden_meta_boxes', 'your_custom_function', 10, 2);

function your_custom_function($hidden, $screen) {
    // your custom code here
    return $hidden;
}

Parameters

  • $hidden (string[]): An array of IDs of meta boxes hidden by default.
  • $screen (WP_Screen): WP_Screen object of the current screen.

More information

See WordPress Developer Resources: default_hidden_meta_boxes

Examples

Hide a custom meta box by default

To hide a custom meta box with the ID ‘my_custom_meta_box’ by default:

add_filter('default_hidden_meta_boxes', 'hide_my_custom_meta_box', 10, 2);

function hide_my_custom_meta_box($hidden, $screen) {
    $hidden[] = 'my_custom_meta_box';
    return $hidden;
}

Show a previously hidden meta box

To show a previously hidden meta box with the ID ‘postcustom’:

add_filter('default_hidden_meta_boxes', 'show_postcustom_meta_box', 10, 2);

function show_postcustom_meta_box($hidden, $screen) {
    $key = array_search('postcustom', $hidden);
    if (false !== $key) {
        unset($hidden[$key]);
    }
    return $hidden;
}

Hide all meta boxes by default

To hide all meta boxes by default:

add_filter('default_hidden_meta_boxes', 'hide_all_meta_boxes', 10, 2);

function hide_all_meta_boxes($hidden, $screen) {
    $all_meta_boxes = array('postcustom', 'trackbacksdiv', 'postexcerpt', 'commentstatusdiv', 'slugdiv');
    $hidden = array_merge($hidden, $all_meta_boxes);
    return $hidden;
}

Hide meta boxes for a specific post type

To hide the ‘postcustom’ meta box for the ‘my_post_type’ post type:

add_filter('default_hidden_meta_boxes', 'hide_postcustom_for_my_post_type', 10, 2);

function hide_postcustom_for_my_post_type($hidden, $screen) {
    if ('my_post_type' == $screen->post_type) {
        $hidden[] = 'postcustom';
    }
    return $hidden;
}

Hide meta boxes on a specific screen

To hide the ‘postexcerpt’ meta box on the ‘post’ editing screen:

add_filter('default_hidden_meta_boxes', 'hide_postexcerpt_on_post_screen', 10, 2);

function hide_postexcerpt_on_post_screen($hidden, $screen) {
    if ('post' == $screen->id) {
        $hidden[] = 'postexcerpt';
    }
    return $hidden;
}