Hide WP Dashboard items for a user role

I 'd like to share a code snippet here for anyone interested in hiding Dashboard Menus, Items, Screen Options, Pages, Posts, and even plugins like JetEngine for any user role (like an Editor)

  • Just one code to hide’em all (you can add or delete).

Her is the Code:

function remove_dashboard_menu_items() {
global $menu;
$user = wp_get_current_user();
$user_role = $user->roles[0]; // Get the first user role assigned to the user

if ($user_role == 'administrator') {
    // Admin can see all menu items
    return;
} elseif ($user_role == 'editor') {
    // Editors can see Pages and Posts
    unset($menu[5]);    // Removes "Posts"
    unset($menu[10]);   // Removes "Media"
    unset($menu[20]);   // Removes "Pages"
    unset($menu[25]);   // Removes "Comments"
    unset($menu[60]);   // Removes "Appearance"
    unset($menu[65]);   // Removes "Plugins"
    unset($menu[70]);   // Removes "Users"
    unset($menu[75]);   // Removes "Tools"
    unset($menu[80]);   // Removes "Settings"
    remove_menu_page('index.php'); // Removes the Dashboard home page
    remove_menu_page('edit.php?post_type=doctors'); // Hides the "Doctors" CPT
    remove_menu_page('jet-engine'); // Hides the JetEngine plugin
} else {
    // All other users see limited menu items
    unset($menu[5]);    // Removes "Posts"
    unset($menu[10]);   // Removes "Media"
    unset($menu[20]);   // Removes "Pages"
    unset($menu[25]);   // Removes "Comments"
    unset($menu[60]);   // Removes "Appearance"
    unset($menu[65]);   // Removes "Plugins"
    unset($menu[70]);   // Removes "Users"
    unset($menu[75]);   // Removes "Tools"
    unset($menu[80]);   // Removes "Settings"
    remove_menu_page('index.php'); // Removes the Dashboard home page
}

}
add_action(‘admin_menu’, ‘remove_dashboard_menu_items’);

function hide_jetengine_menu_for_editors() {
$user = wp_get_current_user();
$user_role = $user->roles[0]; // Get the first user role assigned to the user

if ($user_role == 'editor') {
    echo '<style>#toplevel_page_jet-engine { display: none !important; }</style>';
}

}
add_action(‘admin_head’, ‘hide_jetengine_menu_for_editors’);

function remove_screen_options_for_editors() {
$user = wp_get_current_user();
$user_role = $user->roles[0]; // Get the first user role assigned to the user

if ($user_role == 'editor') {
    echo '<style>#screen-options-link-wrap { display: none !important; }</style>';
}

}
add_action(‘admin_head’, ‘remove_screen_options_for_editors’);

function remove_dashboard_widgets_for_editors() {
$user = wp_get_current_user();
$user_role = $user->roles[0]; // Get the first user role assigned to the user

if ($user_role == 'editor') {
    remove_meta_box('dashboard_activity', 'dashboard', 'normal');   // Activity
    remove_meta_box('dashboard_right_now', 'dashboard', 'normal');  // At a Glance
    remove_meta_box('dashboard_quick_press', 'dashboard', 'side');  // Quick Draft
    remove_meta_box('dashboard_primary', 'dashboard', 'side');      // WordPress News
    remove_meta_box('dashboard_secondary', 'dashboard', 'side');    // Secondary WordPress News
    remove_meta_box('dashboard_site_health', 'dashboard', 'normal');// Site Health Status
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal'); // Recent Comments
    remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal'); // Incoming Links
    remove_meta_box('dashboard_plugins', 'dashboard', 'normal');    // Plugins
    remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side'); // Recent Drafts
    remove_meta_box('dashboard_custom_feed', 'dashboard', 'normal'); // Custom Feed
    remove_meta_box('dashboard_wpforms_reports', 'dashboard', 'normal'); // WPForms widget, if installed
    // Add any other widgets that need to be removed
}

}
add_action(‘wp_dashboard_setup’, ‘remove_dashboard_widgets_for_editors’);