Remove admin menu for custom taxonomy attached to custom post type

I’m trying to create a taxonomy that is sort of hidden.. meaning i intend to adjust the metabox so that you can only select a unique term from 3 options. “featured”,”normal” or “excluded”. but i can’t figure out how to remove the administration menu.

the following removes the Tags menu item from underneath Posts:

Read More
add_action('admin_menu','yoursite_admin_menu');
function yoursite_admin_menu() {
    // remove_submenu_page was introduced in 3.1
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
}

but this doesn’t remove the Featured taxonomy from underneath Portfolio

add_action('admin_menu','yoursite_admin_menu');
function yoursite_admin_menu() {
    // remove_submenu_page was introduced in 3.1
    remove_submenu_page( 'edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=featured&post_type=portfolio' );
}

i’ve tried it a couple of different ways w/ regards to the slugs, but can’t get any of them to work. what am i missing?

Related posts

Leave a Reply

3 comments

  1. You can use remove_submenu_page(), but getting the submenu slug correct is tricky and it has to be exactly right to work. The correct submenu_slug is not exactly the same as the link you click in the menu, the one in the menu is URL encoded but the slug itself is html encoded, the main difference being in the slug any & chars will instead be &amp

    In your example the function call should probably be:

    remove_submenu_page( 'edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=featured&post_type=portfolio' );
    

    To really get it right var_dump the submenu variable and you can see the actual slug in use by the system, see https://stackoverflow.com/questions/7610702/wordpress-remove-submenu-from-custom-post-type/ for a worked example.

  2. This maybe old, and possibly even at the time of the original question not available but..

    If you look in wp-includes/taxonomy.php there is a show_in_menu option for the register_taxonomy() hook that was left out of WordPress’s documentation.

    • show_in_menu – Whether to show the taxonomy in the admin menu.
      • If true, the taxonomy is shown as a submenu of the object type menu.
      • If false, no menu is shown.
      • show_ui must be true.
      • If not set, the default is inherited from show_ui.

    Thought I would just leave this here for anyone looking for the answer 🙂

  3. following Bainternet’s comment, i registered the taxonomy without showing any of the UI elements

    add_action( 'init', 'kia_register_featured_tax', 0 );
    
    function kia_register_featured_tax(){
        if(!taxonomy_exists('portfolio_featured')){
            $labels = array(
                'name' => _x( 'Featured', $this->plugin_domain ),
                'singular_name' => _x( 'Featured', $this->plugin_domain )           
            );
    
            $args = array(
                'labels' => $labels,
                'rewrite' => array( 'slug' => 'portfolio-featured' ),
                'query_var' => true,
                'public' => true,
                'show_ui' => false,
                'show_tagcloud' => false,
                'show_in_nav_menus' => false,
            );
            register_taxonomy( 'portfolio_featured', array( 'portfolio' ), $args );
        }
    }