Custom post type, taxonomy and admin bar

The admin menu is kind of a pain to work with, it’s not very flexible and is in need of an overhaul. See this ongoing ticket on the subject.

What you can do is use the remove_submenu_page function to remove the category and tag submenu pages, then add them on the top level via add_menu_page. For example, this will remove the categories submenu and move it to the top level:

function wpa83704_adjust_the_wp_menu() {
    remove_submenu_page(
        'edit.php',
        'edit-tags.php?taxonomy=category'
    );
    add_menu_page(
        'Categories',
        'Categories',
        'add_users',
        'edit-tags.php?taxonomy=category',
        '',
        'div',
        6
    );
}
add_action( 'admin_menu', 'wpa83704_adjust_the_wp_menu', 999 );

There are a couple of issues here though.

  1. The icons that WordPress uses for menu items can’t readily be used for these new menu items, you need a URL to the image, or you can set it to div and you’ll have to add some CSS via admin_head to get the icon you want in there.

  2. When you select the new Categories top-level menu item, the wrong menu item will be highlighted. The only way to fix this currently is via JavaScript. See this answer for some code to solve that.