2017-10-06 129 views
0

我已经提出,我使用了一些不同的职位类型的自定义分类删除自定义分类菜单为intranet-post类型,并且只有intranet-categories的管理菜单中才显示它们,因为我只想编辑这些自定义分类并向intranet-categories发布类型添加条款。我试过这样做:WordPress的从管理菜单

function remove_taxonomy_submenu_pages() { 
    $categories = get_object_taxonomies('intranet-categories'); 
    foreach($categories as $category) { 
     remove_menu_page('edit.php', 'edit-tags.php?taxonomy=' . $category . '&post_type=intranet-post'); 
    } 
} 

add_action('admin_menu', 'remove_taxonomy_submenu_pages', 20); 

但是,这并没有工作,什么是正确的方法来做到这一点?

回答

0

如果我正确地理解了你的话,最简单的方法就是只为你需要的帖子类型注册分类法。所以你需要删除其他帖子类型。

register_taxonomy('company', ['intranet-categories'] 

这将注册此分类仅为内联网类别。

希望它有帮助。

0

限制可用于自定义帖子类型的分类法的“WordPress”方式是在注册分类标准时注册分类标准时注册类型 - 无论哪种方式。

所以,在你确实想这种分类注册的岗位类型,添加这种说法:

register_post_type(
    ... 
    'taxonomies' => [ 'intranet-categories' ] 
    ... 
); 

和/或注册您的分类时,定义(在注册),其中后型它应该被分配到:

register_taxonomy('company', ['intranet-categories'], [... 

但是,看来你可能已经知道这一点(根据您的代码),你仍然希望与intranet-posts相关的分类,你只是不希望它在显示管理员?

所以 - 为了从仪表板中删除的菜单项,你会做这样的事情:

function remove_taxonomy_submenu_pages() { 
    global $menu; 
    // see the menu items 
    var_dump($menu); 
    // after var_dump, you can see which item you want to remove, so you can remove like so: 
    foreach ($menu as $i => $item) { 
     // assuming 'intranet-post' is the menu item (which it probably isn't, find it using the var_dump info above) 
     if ('intranet-post' == $item[2]) { 
      unset($menu[$i]); 
     } 
    } 
} 

add_action('admin_menu', 'remove_taxonomy_submenu_pages', 9999);