पोस्ट प्रकार जोड़ने / संपादित करने से कुछ स्क्रीन विकल्प और मेटा बॉक्स कैसे निकालें?


10

अब, जब आप अपने इच्छित पोस्ट प्रकार के भीतर किसी विशेष पोस्ट को जोड़ते या संपादित करते हैं, तो और भी स्क्रीन विकल्प होते हैं। हालाँकि, ये स्क्रीन विकल्प मेटा बॉक्स दिखा / छुपा रहे हैं। मैं प्रोग्राम बॉक्स के इन पंजीकृत स्क्रीन विकल्पों में से सभी की एक सूची प्राप्त करने में सक्षम होना चाहता हूं, ताकि मैं फिर से जांच कर सकूं कि क्या स्क्रीन विकल्प का एक निश्चित सरणी मौजूद है, और यदि वे करते हैं, तो मैं उन्हें प्रोग्रामेटिक रूप से हटाने की योजना बनाता हूं।

वर्डप्रेस - स्क्रीन विकल्प - पोस्ट बॉक्स मेटा जोड़ें या संपादित करें पूर्ण आकार के स्क्रीनशॉट के लिए यहां क्लिक करें

प्रश्न मैं पोस्ट प्रकार पर सभी पंजीकृत स्क्रीन विकल्प (मेटा बॉक्स) की सूची कैसे प्राप्त कर सकता हूं, जहां आप अपने इच्छित पोस्ट प्रकार के भीतर एक विशेष पोस्ट जोड़ना या संपादित करना चाहते हैं।

अंत में, यहाँ लक्ष्य इन विकल्पों को हटाने का है और न केवल उन्हें अक्षम करने का है। मैं अनावश्यक डैशबोर्ड मेटा बॉक्स को हटाने के लिए जो मैंने पूरा किया है, उसकी तर्ज पर कुछ करना चाह रहा हूं ।

जवाबों:


13

आपको $wp_meta_boxesजिस चीज की आवश्यकता है वह वैश्विक अनुक्रमित है get_current_screen()->id। स्क्रीन विकल्पों को हटाने से मेटाबॉक्स को भी हटाया जाएगा जो आप 'in_admin_header'हुक का उपयोग करके स्क्रीन विकल्प प्रदर्शित करने से ठीक पहले कर सकते हैं ।

तो चलिए मान लेते हैं कि आप "Send Trackbacks" स्क्रीन विकल्प से छुटकारा पाना चाहते हैं जो आप इस स्क्रीनशॉट में देखते हैं:

निम्न विषय को अपनी थीम की functions.phpफ़ाइल में या आपके द्वारा बनाए जा रहे प्लगइन में ड्रॉप करें और कोड "Send Trackbacks" स्क्रीन विकल्प को हटा देगा (और यह मेटाबॉक्स जुड़ा हुआ है, जो कि आप भी चाहते थे?)

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

और यहाँ ऐसा दिखता है कि उपरोक्त कोड को वर्डप्रेस 3.4 साइट पर जोड़े जाने के बाद:

PhpStorm के भीतर Zend डिबगर का उपयोग करना यहाँ का निरीक्षण है, $wp_meta_boxes[get_current_screen()->id]तो आप देख सकते हैं कि पोस्ट संपादन स्क्रीन में वर्डप्रेस 3.4 की डिफ़ॉल्ट स्थापना में कौन से मूल्य हैं (मैंने अपने उदाहरण में संदर्भित सरणी अनुक्रमित को परिचालित किया है, अर्थात $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

उम्मीद है कि यह आप के लिए क्या देख रहे थे?


3
एकदम कमाल का! बधाई हो, Ecklund, आपको न केवल एक विहित जवाब मिला, लेकिन एक पौराणिक ..!
ब्रासोफिलो

@brasofilo की तारीफ के लिए शुक्रिया। मैं सम्मानित हूँ।
माइकस्किंकल

@MikeSchinkel किसी पोस्ट के ऐड / एडिटिंग पर काम करता है, और इसके लिए आपको धन्यवाद देता हूं, लेकिन आप उस पेज के लिए स्क्रीन ऑप्शन मेटा बॉक्स कैसे हटाते हैं, जिसमें wp_list_table है, जिसमें आपकी सभी पोस्ट की सूची है? स्क्रीनशॉट # 1 का संदर्भ लें।
माइकल एक्लंड

@MichaelEcklund हाय, मुझे लगता है कि मुझे सवालों के जवाब नहीं देना चाहिए जब मैं पूरी तरह से प्रश्न को समझने के लिए थक गया हूँ, एह? अनुत्तरित प्रश्न का उत्तर वास्तव में मेरे द्वारा दिए गए उत्तर से काफी अलग है, इसलिए यह वास्तव में दो अलग-अलग प्रश्न हैं। आप इस सवाल को संपादित करने के बारे में कैसा महसूस करेंगे, यह जानने के लिए कि मैंने क्या उत्तर दिया, और फिर एक और प्रश्न जोड़ते हुए पूछा कि मैंने क्या नहीं किया? यदि आप ऐसा कर सकते हैं और टिप्पणियों में यहां इसके लिए एक लिंक पोस्ट कर सकते हैं तो मुझे लगेगा कि मैं उस प्रश्न के लिए समकक्ष विवरणों का उत्तर भी पोस्ट करूंगा। अन्यथा दोनों के लिए एक सुसंगत उत्तर लिखना जटिल हो सकता है।
माइकस्किंकल

1
@ मिचेलइकंड कूल, धन्यवाद। उत्तर दिया गया: wordpress.stackexchange.com/a/56896/89
माइकस्किंकेल

0

क्षमा करें, यह थोड़ा साइड ट्रैक है, लेकिन मैंने पाया कि यह उपयोगी है जब यह बॉक्स मेटा बॉक्स से wp को हटाने की बात आती है, लेकिन कस्टम या कस्टम थीम से संबंधित मेटा बॉक्स के लिए इतना नहीं। थोड़ा और स्पष्ट करने के लिए: मैंने एक नया विषय स्थापित किया, जिसमें जब भी आप एक नया पोस्ट करते हैं, तो वह स्क्रीन विकल्प में दिखाई देने वाला एक कस्टम मेटा बॉक्स पेश करता है। (मैं wp के लिए नया हूँ) किसी कारण के लिए माइक के दृष्टिकोण का उपयोग कर मैं इस कस्टम मेटा बॉक्स को हटाने में सक्षम नहीं था, लेकिन यह सब कुछ गैर-कस्टम के लिए काम करता था। अपनी मूर्खता के लिए मैं घंटों तक दीवार से टकराता रहा, फिर भी यह पता नहीं लगा सका कि मुझे वापस जाना है:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.