2017-10-06 135 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);