I'm looking for a complete blank Dashboard. No widgets at all and preferably one column.

There are snippets to remove the default WordPress widgets but haven't found anything about the ones added by plugins. Searched all over and seems that this hasn't been asked.

Not blank WordPress Dashboard

3 Answers 3


From this Q&A, I've learned about the global variable $wp_meta_boxes. And over there is also the code to remove the default meta boxes.

After examining the variable, this is the code I wrote to remove all Dashboard Widgets, including the ones added by plugins:

add_action('wp_dashboard_setup', 'wpse_73561_remove_all_dashboard_meta_boxes', 9999 );

function wpse_73561_remove_all_dashboard_meta_boxes()
    global $wp_meta_boxes;
    $wp_meta_boxes['dashboard']['normal']['core'] = array();
    $wp_meta_boxes['dashboard']['side']['core'] = array();

The answer to force one column as a screen option is from here:

add_filter( 'get_user_option_screen_layout_dashboard', 'wpse_4552_one_column_layout' );

function wpse_4552_one_column_layout( $cols ) {
    if( current_user_can( 'basic_contributor' ) )
        return 1;
    return $cols;

This one provided the code to hide the Screen Options and the Help tabs:

add_filter( 'contextual_help', 'wpse_25034_remove_dashboard_help_tab', 999, 3 );
add_filter( 'screen_options_show_screen', 'wpse_25034_remove_help_tab' );

function wpse_25034_remove_dashboard_help_tab( $old_help, $screen_id, $screen )
    if( 'dashboard' != $screen->base )
        return $old_help;

    return $old_help;

function wpse_25034_remove_help_tab( $visible )
    global $current_screen;
    if( 'dashboard' == $current_screen->base )
        return false;
    return $visible;

Ok, now there's almost nothing in the Dashboard, what's next?

A bit of CSS to hide the icon-index and H2 title, and some jQuery to fill the void:

add_action( 'admin_head-index.php', 'wpse_73561_dashboard_scripts' );

function wpse_73561_dashboard_scripts() {
        <style>#icon-index, .wrap h2 {display:none}</style>
        <script language="javascript" type="text/javascript">
            jQuery(document).ready(function($) {
                fillTheVoid(); // soon in StackOverflow 

[ update ]

The filled void can be found in StackOverflow.
Use that wpse_73561_dashboard_scripts function instead of this one.

  • Why not just $wp_meta_boxes['dashboard']['normal']['core'] = array()?
    – fuxia
    Commented Nov 22, 2012 at 1:46
  • @toscho : I knew there was something weird about those lines... Danke schön :)
    – brasofilo
    Commented Nov 22, 2012 at 1:50

This will work fine

add_action('wp_dashboard_setup', 'remove_dashboard_widgets' );
function remove_dashboard_widgets() {

    global $wp_meta_boxes;


Remove Default WP metabox in dashboard:

@source https://github.com/vincentorback/clean-wordpress-admin/blob/master/dashboard.php

 * Removing dashboard widgets.
 * @link https://developer.wordpress.org/reference/functions/remove_meta_box/
    function () {
        // Remove the 'Welcome' panel
        remove_action( 'welcome_panel', 'wp_welcome_panel' );

        // Remove 'Site health' metabox
        remove_meta_box( 'dashboard_site_health', 'dashboard', 'normal' );

        // Remove the 'At a Glance' metabox
        remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );

        // Remove the 'Activity' metabox
        remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );

        // Remove the 'WordPress News' metabox
        remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );

        // Remove the 'Quick Draft' metabox
        remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );

Remove All WP metabox in dashboard ( for all Plugins ):

@source: unknown

add_action('wp_dashboard_setup', 'kdev_remove_dw', 999 );
function kdev_remove_dw() {
    global $wp_meta_boxes;
    $wp_meta_boxes = array();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.