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


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
    Nov 22 '12 at 1:46
  • @toscho : I knew there was something weird about those lines... Danke schön :)
    – brasofilo
    Nov 22 '12 at 1:50

This will work fine

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

    global $wp_meta_boxes;


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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