2011-09-30 13 views
5

मैंने टैग वर्गीकरण समर्थन के साथ एक कस्टम पोस्ट प्रकार नाम पोर्टफोलियो बनाया है।वर्डप्रेस - कस्टम पोस्ट प्रकार से उपमेनू को हटाएं

चूंकि 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() का उपयोग कर सकते हैं - हालांकि यह चाल पूरी तरह से स्लग प्राप्त करने के लिए है, यह करने का सबसे आसान तरीका वैश्विक $ सबमेनू को डंप करना और 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'); 

ध्यान दें कि सबमेनू स्लग एचटीएमएल इनकोडिंग तो एम्परसेंड अब & है - यह शायद कि बात यह है कि के माध्यम से लोगों से बाहर काम करने के लिए बना दिया है है पहला सिद्धांत क्या स्लॉग नाम होना चाहिए।

+0

+1, यह काम करता है। @IllesPeter, यह स्वीकार्य उत्तर होना चाहिए। – Sparky

+0

+1 ने पुष्टि की कि यह काम करता है। जैसा कि कहीं और बताया गया है, यह कार्य दोनों तर्कों को स्थानांतरित करने के लिए बहुत संवेदनशील है। यह सही पाने के लिए अलग-अलग बदलावों के साथ बने रहने के लायक है। –

+0

+1 सुपर मददगार! धन्यवाद @ 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 समाधान सबसे अच्छा है। –

संबंधित मुद्दे