विशिष्ट उपयोगकर्ता प्रकारों से कस्टम पोस्ट प्रकार UI / मेनू को छिपाना संभव है?


20

मैं जो करना चाह रहा हूं वह विशिष्ट उपयोगकर्ता भूमिकाओं से कस्टम पोस्ट प्रकार के लिए UI को पूरी तरह से छिपा रहा है ... Ive ने पहले उन CPT का उपयोग करने के लिए पहुँच को अक्षम करने के लिए कई संसाधन पाए, लेकिन कुछ भी नहीं जो वास्तव में आपको CPT UI को पूरी तरह से छिपाने की अनुमति देता है डैशबोर्ड में क्या उपयोगकर्ता लॉग इन है, इसके आधार पर सभी एक साथ।

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

Id वास्तव में एक प्लगइन के साथ इसे पूरा नहीं करना पसंद करते हैं, लेकिन अगर ऐसा कुछ है जो गैर-फूले हुए तरीके से चाल कर सकता है जो अभी भी बहुत अच्छा होगा तो मुझे लगता है।

आपकी मदद के लिए धन्यवाद, एस.बी.

जवाबों:


39

गैर-व्यवस्थापक उपयोगकर्ताओं से पोस्ट प्रकार मेनू आइटम छिपाने के लिए:

function wpse28782_remove_menu_items() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page( 'edit.php?post_type=your_post_type' );
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_menu_items' );

your_post_type आपके वास्तविक पोस्ट प्रकार का नाम होना चाहिए।

संपादित-

अन्य मेनू पृष्ठ जिन्हें आप निकाल सकते हैं:

remove_menu_page('edit.php'); // Posts
remove_menu_page('upload.php'); // Media
remove_menu_page('link-manager.php'); // Links
remove_menu_page('edit-comments.php'); // Comments
remove_menu_page('edit.php?post_type=page'); // Pages
remove_menu_page('plugins.php'); // Plugins
remove_menu_page('themes.php'); // Appearance
remove_menu_page('users.php'); // Users
remove_menu_page('tools.php'); // Tools
remove_menu_page('options-general.php'); // Settings

EDIT 2 -

प्लगइन मेनू आइटम निकाल रहा है।

प्लगइन्स के लिए, ऐसा लगता है कि आपको केवल page=क्वेरी संस्करण की आवश्यकता है । नोट करने के लिए दूसरी बात प्राथमिकता है, जो तीसरा तर्क है admin_menu add_action। इसे पर्याप्त रूप से कम सेट करना होगा (संख्या जितनी अधिक होगी, प्राथमिकता कम होगी) ताकि प्लगइन्स पहले ही मेनू में खुद को जोड़ लें।

function wpse28782_remove_plugin_admin_menu() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page('cart66_admin');
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_plugin_admin_menu', 9999 );

इस तरह के एक सरल समाधान, धन्यवाद यह पूरी तरह से काम किया!
Mr.Brown

जिज्ञासु, wpse28782_remove_menu_itemsएक फ़ंक्शन नाम है जिसे आपने यादृच्छिक रूप से चुना है या यह WP के लिए विशिष्ट है? .... साथ ही, मैं इस विचार पर विस्तार करने और अतिरिक्त CPT के लक्ष्यीकरण के बारे में कैसे जाऊंगा, या उस मामले के लिए अन्य मूल WP मेनू? मदद के लिए एक बार फिर से धन्यवाद!
Mr.Brown

1
@ Mr.Brown - फ़ंक्शन नाम आपके प्रश्न की आईडी (url की जाँच करें) पर आधारित है, बस कुछ विशिष्ट होने की गारंटी है, आप इसे तब तक नाम दे सकते हैं जब तक आप इसे पसंद करेंगे जब तक यह एक मौजूदा फ़ंक्शन नहीं है। आप remove_menu_pageअन्य CPT, साथ ही अन्य मेनू आइटम निकालने के लिए अतिरिक्त कॉल भी जोड़ सकते हैं , मेरा संपादन देखें।
मिलो

इतना कमाल, फिर से धन्यवाद। यह एक अद्भुत उपाय है।
Mr.Brown 20

बस एक आखिरी बात - मैं वर्तमान में स्थापित प्लगइन्स से अतिरिक्त मेनू के लिए उपयोग किए जाने वाले टेम्पलेट नाम के बारे में कैसे पता लगाऊं? अर्थात। remove_menu_page('cart_plugin');
Mr.Brown

2

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

if( !current_user_can( 'administrator' ) ) {
    remove_action( 'admin_menu', 'cptui_plugin_menu' );
}

1

आप व्यवस्थापन प्लगइन का उपयोग भी कर सकते हैं । इस प्लगइन में विभिन्न प्रकार की भूमिकाओं को छिपाने के लिए सभी प्रकार के पोस्ट, मेटा बॉक्स और कई अन्य विकल्प हैं। कोई कोडिंग नहीं।


0

यदि आप उस प्लगइन के मेनू को छिपाना चाहते हैं, जिसका नाम "कस्टम पोस्ट टाइप यूआई" उर्फ ​​सीपीटीयूआई है, तो पहले लिंक को remove_menu_page के साथ जोड़ना संभव नहीं है।

तुमको बस यह करना है ;

function wpse_28782_remove_menus() {
    remove_menu_page('cptui_main_menu');
}
add_action('admin_init', 'wpse_28782_remove_menus');

0

सभी दुकान प्रबंधक उपयोगकर्ता भूमिकाओं के लिए शीर्ष-स्तरीय मेनू "उत्पाद" के तहत वोकॉमर्स सबमेनस को छिपाने के लिए (वर्डप्रेस 5.1.1):

function remove_menus_shopmgr(){

// If the current user is a shop manager
if ( current_user_can('shop_manager') ) {

   //removes Products > Categories submenu 
    remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_cat&post_type=product' );

   //removes Products > Tags submenu
    remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_tag&post_type=product' ); 

    }
}

add_action( 'admin_menu', 'remove_menus_shopmgr', 999 );

0

यदि remove_menu_pageआप के लिए काम नहीं करता है (यह मेरे लिए नहीं था) तो मेनू को हटाने के बजाय, एक विकल्प यह है कि वर्डप्रेस को पोस्ट प्रकार के लिए मेनू न दिखाने के लिए कहा जाए:

function wpse28782_hide_menu_items() {
    if( !current_user_can( 'administrator' ) ) {
        $post_type = get_post_type_object( 'your_post_type');
        if ($post_type) {
            $post_type->show_in_menu = false;
        }
    }
}
add_action( 'admin_menu', 'wpse28782_hide_menu_items', 99 );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.