कस्टम पोस्ट प्रकार स्क्रीन से कस्टम टैक्सोनॉमी मेटाबोक्स निकालें


17

मेरे पास दो पदानुक्रमित कस्टम वर्गीकरण हैं, प्रत्येक एक समान कस्टम पोस्ट प्रकार पर। मैं पोस्ट प्रकार के संपादन स्क्रीन पर प्रत्येक के लिए मेटाबेस को निकालना चाहूंगा।

मैंने कस्टम टैक्सोनॉमी मेटाबोक्स फॉर्म कस्टम पोस्ट प्रकार को पढ़ा है और आप श्रेणी-शैली (श्रेणीबद्ध) टैक्सोनॉमी मेटाबॉक्स को कैसे हटाते हैं? लेकिन मैं अभी भी फंस गया हूं।

मैं जिस फंक्शन का उपयोग कर रहा हूं वह है:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

मैंने post_types और custom_taxonomies को उपसर्ग किया, लेकिन यह ऐसा है। मैंने कोडक द्वारा सुझाए गए admin_menuहुक और हुक का उपयोग करने की कोशिश add_meta_boxesकी है। मैंने दोनों normalऔर sideतीसरे पैरामीटर के लिए कोशिश की है ।

उपरोक्त फ़ंक्शन mu-pluginsउस फ़ंक्शन के नीचे एक फ़ाइल में स्थित है जो पोस्ट प्रकार और वर्गीकरण को पंजीकृत करता है।


EDIT: यह register_taxonomy फ़ंक्शन में एक टाइपो था। मैं एक बुरा व्यक्ति हूं। मदद के लिए सभी के लिए धन्यवाद। मैंने फिर भी कुछ सामान सीखा!


साथ भी 'show_ui' => false?
18

1
मैं अभी भी मेनू में यूआई चाहता हूं, बस एक पोस्ट को संपादित करते समय नहीं।
mrwweb

जवाबों:


37

यदि आप मैन्युअल रूप से अपनी कस्टम टैक्सोनॉमी को register_taxonomy के माध्यम से पंजीकृत कर रहे हैं तो आप यह नियंत्रित करने के लिए तर्कों में पारित कर सकते हैं कि मेट्रॉक्सॉक्स कहाँ दिखाई देता है।

नीचे दिए गए उदाहरण में सेटिंग show_uiको falseपूरी तरह से संपादित स्क्रीन, त्वरित संपादन स्क्रीन और व्यवस्थापक मेनू से मेटाबेस को हटा दिया जाएगा। लेकिन अगर आप सेट show_uiकरते trueहैं तब तक show_in_quick_editऔर meta_box_cbतर्कों का उपयोग करके और अधिक सूक्ष्म नियंत्रण प्राप्त कर सकते हैं (बाद में वांछित के रूप में सीपीटी एडिट स्क्रीन पर मेटाबेस को छुपाता है)।

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);

यह चलेगा। व्यवस्थापक मेन्यू रखें और कस्टम टैक्सोनॉमी को हटाकर फॉर्म पोस्ट के नए प्रकार जोड़ें। धन्यवाद।
आईटी व्लॉग्स

धन्यवाद! मैं 'meta_box_cb' => को पोस्ट-न्यू में छिपाने के लिए गलत देख रहा था, जहां इसे अशक्त करने के लिए डिफ़ॉल्ट वर्डप्रेस संस्करण प्रदर्शित करता है।
रयान एच


7

आप कहते हैं कि आप postसंपादन स्क्रीन से बक्से को हटाना चाहते हैं, न कि पोस्ट प्रकार की स्क्रीन को, इसलिए यह मानते हुए कि आप अपनी टैक्सोनॉमी को केवल उस पोस्ट प्रकार के लिए पंजीकृत करने में सक्षम होना चाहिए जिसे आप इसे लागू करने के लिए चाहते हैं, और इस से पूरी तरह बचें। कोडेक्स में उदाहरण केवल bookपोस्ट प्रकार के लिए नमूना वर्गीकरण को पंजीकृत करता है :

register_taxonomy( 'genre', array( 'book' ), $args );

मुझे लगता है कि यह वही है जो आपको करने की आवश्यकता है, लेकिन आपने पोस्ट प्रकार या वर्गीकरण के लिए कोई पंजीकरण कोड पोस्ट नहीं किया है।

यदि आपने मेटा बॉक्स खुद बनाए हैं - यानी, ये बॉक्स डिफ़ॉल्ट नहीं हैं - तो इस मुद्दे से बचने का तरीका यह है कि मेटा-बॉक्स को विशिष्ट प्रकार के हुक पर पंजीकृत किया जाए :

do_action('add_meta_boxes_' . $post_type, $post);

या ऊपर दिए गए उदाहरण का पालन करने के लिए:

add_action('add_meta_boxes_book', 'your-box-callback');

उन तरीकों में से एक को आपके लिए इसे हल करना चाहिए। मुझे नहीं लगता कि आपको इसका उपयोग करना चाहिए remove_meta_box

यदि आप मेटा बॉक्स को उस पोस्ट प्रकार से हटाने की कोशिश कर रहे हैं जिसे वे पंजीकृत हैं, तो यह काम करता है (कोडेक्स में उदाहरण के बाद फिर से:)

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

मुझे पूरा यकीन है कि admin_menuयह बहुत जल्दी है, लेकिन यह सत्यापित नहीं किया है। add_metaboxesमेरे लिए भी काम करता है। मुझे नहीं पता कि यह आपके लिए काम क्यों नहीं करता है।


अस्पष्ट होने के लिए क्षमा करें। मेरा मतलब था पोस्ट टाइप स्क्रीन। प्रत्येक वर्गीकरण केवल एक कस्टम पोस्ट प्रकार के लिए पंजीकृत है। मैंने उस add_meta_boxes_ * हुक का उपयोग करने की कोशिश की, लेकिन मैं उस पर कुछ बदलावों की कोशिश करूँगा (हालांकि मैं ऑटो-जेनरेट किए गए मेटाबोक्स का उपयोग कर रहा हूं)।
mrwweb

फिर जवाब में अंतिम विकल्प यह करना चाहिए। मैंने इसका परीक्षण किया। बॉक्स चला जाता है। मैं यह नहीं कह सकता कि मैं बक्से के बिना वर्गीकरण के होने के तर्क को समझता हूं।
s_ha_dum

(ऊपर संपादित देखें। यह एक टाइपो था। यह मुझ पर है ... मदद के लिए धन्यवाद)। आपके प्रश्न का उत्तर देने के लिए, मैं एक उन्नत कस्टम फील्ड (यह साइट के उपयोगकर्ताओं के लिए एक बेहतर इंटरफ़ेस) के साथ टैक्सोनॉमी प्रदर्शित कर रहा हूं।
mrwweb

आपके अंतिम उदाहरण ने मुझे सही दिशा में ला खड़ा किया, लेकिन मेरे लिए यही काम किया: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
मार्कोस बुर्के

मैंने पाया कि यह सिंटैक्स वर्डप्रेस के वर्तमान संस्करण के साथ काम नहीं करता है, एक काम के समाधान के लिए इस उत्तर की जांच करें
डेवी

3

कस्टम टैक्सोनोमीज़ प्रबंधन के लिए ACF का उपयोग करना, डिफ़ॉल्ट मेटाबोक्स अनावश्यक हैं। मैंने कोशिश की, सफलतापूर्वक, यह कोड:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

निम्न प्राथमिकता (100) इस कोड को काम करने दें, भले ही टैक्सोनोमी सीपीटी-यूआई जैसे प्लगइन द्वारा बनाई गई हो।


टैगशिव में अनुगामी होना चाहिए: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
ग्रेग हैगूड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.