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’);