The question:
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?
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
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');
}
Method 2
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());
}
Method 3
You may also want to remove the meta boxes from the Post Creation page
// REMOVE POST META BOXES
function remove_my_post_metaboxes() {
remove_meta_box( 'categorydiv','post','normal' ); // Categories Metabox
remove_meta_box( 'tagsdiv-post_tag','post','normal' ); // Tags Metabox
}
add_action('admin_menu','remove_my_post_metaboxes');
Method 4
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');
}
Method 5
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' );
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0