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;
$screen->remove_help_tabs();
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
});
</script>
<?php
}
[ update ]
The filled void can be found in StackOverflow.
Use that wpse_73561_dashboard_scripts
function instead of this one.