Вы можете использовать remove_submenu_page()
- хитрость, однако, заключается в том, чтобы правильно настроить слаг, для этого проще всего выгрузить глобальное подменю $ и проверить наличие menu_slug и submenu_slug.
global $submenu;
var_dump($submenu);
Это даст вам массив меню, клавишей верхнего уровня является menu_slug, а затем правильный элемент submenu_slug можно найти в элементе 2 вложенных массивов.
Так что, если бы у меня был пользовательский тип записи под названием "my_events", и я хотел удалить из него меню тегов, моя исходная структура меню выглядела бы так
...
'edit.php?post_type=my_events' =>
array
5 =>
array
0 => string 'All Events' (length=10)
1 => string 'edit_posts' (length=10)
2 => string 'edit.php?post_type=my_events' (length=28)
10 =>
array
0 => string 'Add New' (length=7)
1 => string 'edit_posts' (length=10)
2 => string 'post-new.php?post_type=my_events' (length=32)
15 =>
array
0 => string 'Tags' (length=4)
1 => string 'manage_categories' (length=17)
2 => string 'edit-tags.php?taxonomy=post_tag&post_type=my_events' (length=55)
...
Отсюда видно, что параметр menu_slug равен 'edit.php?post_type=my_events'
, а параметр подменю для меню тегов - 'edit-tags.php?taxonomy=post_tag&post_type=my_events'
.
Таким образом, вызов функции удаления будет:
remove_submenu_page('edit.php?post_type=my_events', 'edit-tags.php?taxonomy=post_tag&post_type=my_events');
Обратите внимание, что слаг подменю закодирован в формате html, поэтому амперсанд теперь &
- вероятно, именно из-за этого людям сложно понять из первых принципов, каким должно быть имя слага.