我创建了一个名为投资组合的自定义帖子类型,支持标签分类。
由于WP在帖子标签和自定义帖子类型标签之间没有区别,我创建了一个菜单项Taxonomy,我想在其中放置类别和帖子标签。我设法创建菜单和子菜单,并从Post菜单中删除类别和帖子标签,但我没有设法从自定义帖子类型菜单中删除帖子标签。
我试过了:
remove_submenu_page( 'edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=post_tag&post_type=portfolio' );
答案 0 :(得分:18)
你可以使用remove_submenu_page()
- 然而诀窍是让slug完全正确,为此,最简单的方法是转储全局$子菜单并检查menu_slug和submenu_slug。
global $submenu;
var_dump($submenu);
这将为您提供菜单数组,顶级键是menu_slug,然后可以在嵌套数组的元素2中找到正确的submenu_slug。
因此,如果我有一个名为“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'
,标签菜单的子菜单slug为'edit-tags.php?taxonomy=post_tag&post_type=my_events'
。
所以remove函数调用将是:
remove_submenu_page('edit.php?post_type=my_events', 'edit-tags.php?taxonomy=post_tag&post_type=my_events');
请注意,子菜单slug是html编码的,所以&符号现在是&
- 这可能是因为人们很难从第一原则中找出slug名称应该是什么。
答案 1 :(得分:7)
这有点脏,但它有效:
add_action('admin_menu', 'remove_niggly_bits');
function remove_niggly_bits() {
global $submenu;
unset($submenu['edit.php?post_type=portfolio'][11]);
}
我不确定您要删除哪个密钥号码。找到这种方法的最佳方法是:
add_action('admin_menu', 'remove_niggly_bits');
function remove_niggly_bits() {
global $submenu;
//unset($submenu['edit.php?post_type=portfolio'][11]);
print_r($submenu); exit;
}
加载管理区域时,一切都会中断,直到删除该行,但它会显示结构和所需的密钥。
答案 2 :(得分:0)
最好只使用'show_ui' => false
。
function car_brand_init() {
// new taxonomy named merk
register_taxonomy(
'merk',
'lease_fop',
array(
'label' => __( 'Merken' ),
'rewrite' => array( 'slug' => 'merken' ),
'update_count_callback' => '_update_post_term_count',
// use this to hide from menu
'show_ui' => false,
'capabilities' => array(
'assign_terms' => 'edit_guides',
'edit_terms' => 'publish_guides'
)
)
);
}
add_action( 'init', 'car_brand_init' );
答案 3 :(得分:0)
以benz001的答案为基础:
无需执行var dump即可正确处理。这对我有用。
remove_submenu_page('edit.php?post_type=POST_TYPE', 'edit-tags.php?taxonomy=TAXONOMY_SLUG&post_type=POST_TYPE')
第一个参数,将POST_TYPE替换为在后端查看存档时在浏览器顶部的URL字段中看到的内容。
第二个参数:左键单击要删除的子菜单,复制链接,删除最后一个正斜杠及其左侧的所有内容。将&替换为&
下面的第二个arg示例。
1复制并粘贴子菜单链接
http://yourwebsite.com/wp-admin/edit-tags.php?taxonomy=your_custom_taxonomy&post_type=your_custom_post
2删除最后一个正斜杠及其所有剩余内容。
edit-tags.php?taxonomy=your_custom_taxonomy&post_type=your_custom_post
3将&替换为HTML实体&
/edit-tags.php?taxonomy=your_custom_taxonomy&post_type=your_custom_post