I want to remove or hide Categories / Tags submenu under Posts in the Admin Menu. I know this works with the themes submenus:

remove_submenu_page( 'themes.php', 'widgets.php' );

The same doesn't seem to work for posts unfortunately:

remove_submenu_page( 'edit.php', 'edit-tags.php' );

I'm using the admin_menu action: add_action( 'admin_menu', 'function_call' )

Do I need to add something else?

  • 2
    Upvote this question, you heathens!!! Commented Mar 11, 2016 at 22:55

5 Answers 5

add_action('admin_menu', 'my_remove_sub_menus');

function my_remove_sub_menus() {
    remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=category');
    remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=post_tag');
  • I'm not seeing this hide the tag and category areas in the Quick Edit section, but I do so remove_meta_box working as described. Commented Mar 14, 2016 at 16:10
  • This is not the prefered method, its like removeing them using css, doesn't guarantee anything. check mbacon40 answer, it looks promissing. Commented Oct 20, 2016 at 21:49
  • @jnhghy-JanteaAlexandru remove_submenu_page does not use CSS to remove the submenu, it removes the entry form the global menu array (see source) so the HTML markup for the menu is not rendered at all (and not CSS-hidden). However, it is true that in some cases it may not prevent users from accessing the screen for the removed submenu directly (see ticket #18850) but OP asked to remove the menu, and it is the way to go.
    – gmazzap
    Commented Oct 24, 2016 at 9:25
  • @gmazzap I was makning a comparation. Removing it this way will not ensure tags are not added by other means ( front end ), I was trying to point out that this removes only the menu entry and not the post type connection to the taxonomy. :) Commented Oct 24, 2016 at 10:15

If you want to completely remove categories and tags you can do so like this:

// Remove Categories and Tags
add_action('init', 'myprefix_remove_tax');
function myprefix_remove_tax() {
    register_taxonomy('category', array());
    register_taxonomy('post_tag', array());

You may also want to remove the meta boxes from the Post Creation page

function remove_my_post_metaboxes() {
  remove_meta_box( 'categorydiv','post','normal' ); // Categories Metabox
  remove_meta_box( 'tagsdiv-post_tag','post','normal' ); // Tags Metabox

Thanks to @mbacon40 and to @gmazzap I was able to use this to remove Product Tags and Categories (product_tag and product_cat) from my menu and from the product add/edit pages.

// Remove Categories and Tags
add_action('init', 'myprefix_remove_tax');
function myprefix_remove_tax() {
    register_taxonomy('product_cat', array());
    register_taxonomy('product_tag', array());

add_action('admin_menu', 'my_remove_sub_menus');
function my_remove_sub_menus() {
    remove_submenu_page('edit.php', 'edit-tags.php?    taxonomy=product_cat&post_type=product');
    remove_submenu_page('edit.php', 'edit-tags.php?    taxonomy=product_tag&post_type=product');

for some reason the edit.php does not work at my setup 5.3

This however works

remove_submenu_page( 'edit-tags.php?taxonomy=category', 'edit-tags.php?taxonomy=post_tag' );
remove_submenu_page( 'edit-tags.php?taxonomy=category', 'edit-tags.php?taxonomy=category' );

Not the answer you're looking for? Browse other questions tagged or ask your own question.