2011-09-30 48 views
5

刪除子菜單我創建了一個名爲組合與標籤分類支持自定義後的類型。WordPress的 - 從自定義後類型

由於WP不作後的標籤和自定義後類型標籤之間的差別,我創建了下我希望把分類和標籤後菜單項分類。我設法創建菜單和子菜單,並且還從郵政菜單中刪除類別和後標籤,但我沒從自定義後類型菜單中刪除帖子標籤。

我想:

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

回答

6

這是一個有點髒,但它的工作原理:

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

一切都將打破,但它會告訴你你所需要的結構和關鍵。

+0

這是一個有點髒。我希望它能夠與remove_submenu_page()一起工作,但是因爲它是唯一的(工作)答案,所以你得到了接受的答案:-) –

16

您可以使用remove_submenu_page() - 然而,訣竅就是讓slug完全正確,做到這一點最簡單的方法是轉儲全局$子菜單並檢查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函數調用將是:

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

注意,子菜單金屬塊HTML編碼,這樣的符號現在& - 這大概是那件事已經使得它的人很難從工作了第一個原則是什麼應該是slug的名字。

+0

+1,它工作。 @IllesPeter,這應該是被接受的答案。 – Sparky

+0

+1證實它有效。正如其他地方所報道的那樣,這個函數對於將兩個論點都置於非常敏感。值得堅持不同的調整來讓它正確。 –

+0

+1 SUPER HELPFUL!謝謝@ benz001 應該是正確的答案。 – user2655393

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'); 
+0

但是這也禁用元框。如果你只想隱藏菜單中的分類,@ benz001解決方案是最好的。 –

相關問題