Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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:

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?

share|improve this question
1  
Why not set the show_II argument of the register_taxonomy to false and create a custom Meta box with just your 3 terms? –  Bainternet Jul 9 '11 at 23:06
    
b/c that would have been too clever by half! :) works perfectly as i was creating a custom metabox w/ radio buttons anyway. –  helgatheviking Jul 9 '11 at 23:51
    
wish i could mark your comment as the solution. –  helgatheviking Feb 17 '12 at 15:10
    
Post it as an answer yourself for future askers with the same issue. that would be thanks enough :) –  Bainternet Feb 17 '12 at 15:38
    
done. i'd like to get my accept rate up, but it seems shady to accept my own answers. ;) –  helgatheviking Feb 17 '12 at 17:48

2 Answers 2

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 http://stackoverflow.com/questions/7610702/wordpress-remove-submenu-from-custom-post-type/ for a worked example.

share|improve this answer
    
thanks for the response. i was able to sort it with Bainternet's comment about registering the taxonomy with show_ui set to false and then adding my own metabox. but your solution is clever. –  helgatheviking Jan 9 '12 at 23:07
up vote 4 down vote accepted

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 );
    }
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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