Hide Dashboard menu items for specific user

To do a “dirty” quick remove Dashboard menu can save you a lot of time, if you have a custom post type that user should only have access to.

In functions.php add the following to remove menu items for the user group Editor:

/* hide Dashboard menu items for user: editor */
add_action( 'admin_init', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
    global $user_ID;
    if ( current_user_can( 'editor' ) ) {
    remove_menu_page('edit.php'); // Posts
    remove_menu_page('upload.php'); // Media
    remove_menu_page('link-manager.php'); // Links
    remove_menu_page('edit-comments.php'); // Comments
    remove_menu_page('edit.php?post_type=page'); // Pages
    remove_menu_page('plugins.php'); // Plugins
    remove_menu_page('themes.php'); // Appearance
    remove_menu_page('users.php'); // Users
    remove_menu_page('tools.php'); // Tools
    remove_menu_page('options-general.php'); // Settings
    }
}

Reference

More:

Disable and remove left menu in Dashboard

Add it to functions.php

/**
 * Remove a top level admin menu in Dashboard
 *
 * http://codex.wordpress.org/Function_Reference/remove_menu_page
 */
function remove_menus(){
 
  remove_menu_page( 'edit.php' );                   //Posts
  remove_menu_page( 'edit-comments.php' );          //Comments
  remove_menu_page( 'tools.php' );                  //Tools
 
}
add_action( 'admin_menu', 'remove_menus' );