I solved my own problem which might be useful for others. Building on hacks like this (10-wordpress-dashboard-hacks) I needed to customize the admin panel. However, I needed to be able to have different admin panels based on user roles (without using any deprecated code). Here is my solution!
I added this to my functions.php in my theme:
// Want to pare down your admin panel for authors?
// Using these functions we make this possible!
//this customization is basically for authors
//START CUSTOM ADMIN PANEL CODE:
//First we remove some widgets
function adminpanel_based_on_role()
{
if (current_user_can('publish_posts') && !current_user_can('install_plugins')){
global$wp_meta_boxes;
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
}
add_action( 'wp_dashboard_setup', 'adminpanel_based_on_role' );
//Next we remove menu items
function remove_menu_items() {
if (current_user_can('publish_posts') && !current_user_can('install_plugins')){
global $menu;
$restricted = array(__('Links'), __('Comments'), __('Media'),
__('Plugins'), __('Tools'), __('Users'));
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){
unset($menu[key($menu)]);}
}
}
}
add_action('admin_menu', 'remove_menu_items');
//END CUSTOM ADMIN PANEL CODE