Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php	(revision 22831)
+++ wp-includes/taxonomy.php	(working copy)
@@ -323,6 +323,7 @@
 						'query_var' => $taxonomy,
 						'public' => true,
 						'show_ui' => null,
+						'show_in_menu' => null,
 						'show_tagcloud' => null,
 						'_builtin' => false,
 						'labels' => array(),
@@ -359,14 +360,20 @@
 		add_permastruct( $taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite'] );
 	}
 
-	if ( is_null($args['show_ui']) )
+	// If not set, default to the setting for public.
+	if ( null === $args['show_ui'] )
 		$args['show_ui'] = $args['public'];
 
+	// If not set, default to the setting for show_ui.
+	if ( null === $args['show_in_menu'] || ! $args['show_ui'] )
+		$args['show_in_menu'] = $args['show_ui'];
+
 	// Whether to show this type in nav-menus.php. Defaults to the setting for public.
 	if ( null === $args['show_in_nav_menus'] )
 		$args['show_in_nav_menus'] = $args['public'];
 
-	if ( is_null($args['show_tagcloud']) )
+	// If not set, default to the setting for show_ui.
+	if ( null === $args['show_tagcloud'] )
 		$args['show_tagcloud'] = $args['show_ui'];
 
 	$default_caps = array(
Index: wp-admin/menu.php
===================================================================
--- wp-admin/menu.php	(revision 22831)
+++ wp-admin/menu.php	(working copy)
@@ -65,7 +65,7 @@
 	/* translators: add new file */
 	$submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
 	foreach ( get_taxonomies_for_attachments( 'objects' ) as $tax ) {
-		if ( ! $tax->show_ui )
+		if ( ! $tax->show_ui || ! $tax->show_in_menu )
 			continue;
 
 		$submenu['upload.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name . '&amp;post_type=attachment' );
@@ -126,7 +126,7 @@
 
 	$i = 15;
 	foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
-		if ( ! $tax->show_ui || ! in_array($ptype, (array) $tax->object_type, true) )
+		if ( ! $tax->show_ui || ! $tax->show_in_menu || ! in_array($ptype, (array) $tax->object_type, true) )
 			continue;
 
 		$submenu["edit.php?post_type=$ptype"][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, "edit-tags.php?taxonomy=$tax->name&amp;post_type=$ptype" );
