Удалить меню администратора для пользовательской таксономии, прикрепленной к настраиваемому типу сообщения

Я пытаюсь создать таксономию, которая является своего рода скрытой. Это означает, что я намереваюсь настроить метабокс, чтобы вы могли выбрать только уникальный термин из трех вариантов. «признакам», «нормальным» или «исключенным». но я не могу понять, как удалить меню администрирования.

следующее удаляет элемент «Теги» из-под Сообщений:

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' ); } 

но это не удаляет Избранную таксономию из-под Портфолио

 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' ); } 

Я пробовал это несколько разных способов, связанных с пулями, но не могу заставить их работать. что мне не хватает?

Solutions Collecting From Web of "Удалить меню администратора для пользовательской таксономии, прикрепленной к настраиваемому типу сообщения"

Вы можете использовать remove_submenu_page() , но получение правильного подменю правильное является сложным, и оно должно быть абсолютно правильным для работы. Правильный submenu_slug не совсем то же самое, что и ссылка, которую вы нажимаете в меню, тот, что находится в меню, кодируется URL-адресом, но сам пул закодирован в html, основное отличие заключается в том, что slug any & chars будет &amp

В вашем примере вызов функции должен быть:

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

Чтобы действительно получить правильную переменную var_dump подменю, и вы можете увидеть фактический пул, используемый системой, см. https://stackoverflow.com/questions/7610702/wordpress-remove-submenu-from-custom-post-type/ для обработанный пример.

Возможно, это старый, и, возможно, даже во время первоначального вопроса, но не ..

Если вы посмотрите в wp-includes / taxonomy.php, существует опция show_in_menu для hook_taxonomy (), которая не указана в документации WordPress.

  • show_in_menu – показывать таксономию в меню администратора.
    • Если true, то таксономия отображается как подменю меню типа объекта.
    • Если false, меню не отображается.
    • show_ui должно быть правдой.
    • Если не установлено, значение по умолчанию наследуется от show_ui.

Думал, я просто оставлю это здесь для тех, кто ищет ответ 🙂

после комментария Bainternet, я зарегистрировал таксономию, не показывая ни один из элементов пользовательского интерфейса

 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 ); } }