केवल साइट व्यवस्थापक भूमिका के लिए कस्टम पोस्ट प्रकार प्रतिबंधित करें


17

मैं गैर कस्टम उपयोगकर्ताओं के लिए इस कस्टम पोस्ट प्रकार को डैशबोर्ड में कैसे दिखाया जा सकता है?

/* Add Websites Custom Post Type */
add_action( 'init', 'create_website_type' );
function create_website_type() {

    register_post_type( 'website',
        array(
            'labels' => array(
                'name' => __( 'Websites' ),
                'singular_name' => __( 'Website' ),
                'add_new' => __( 'Add New Website' ),
                'add_new_item' => __( 'Add New Website' ),
                'edit' => __( 'Edit Website' ),             
                'edit_item' => __( 'Edit Website' ),                
                'new_item' => __( 'Add New Website' ),              
                'view' => __( 'View Website' ),         
                'view_item' => __( 'View Website' ),                    
                'search_items' => __( 'Search Websites' ),  
                'not_found' => __( 'No Websites Found' ),
                'not_found_in_trash' => __( 'No Websites found in Trash' ),                                         
            ),
            'description' => __('Websites to be shown in Resources section.'),
            'public' => true,
            'show_ui' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'menu_position' => 20,
            'supports' => array('title', 'editor'),
            'can_export' => true        
        )
    ); 
    remove_post_type_support('website','editor'); 
}

जवाबों:


13

register_post_type()capabilitiesअपने तर्कों में एक पैरामीटर को स्वीकार करता है । get_post_type_capabilities()संभावित मूल्यों के लिए देखें । टिप्पणियों से:

डिफ़ॉल्ट रूप से, सात कुंजियों को क्षमता सरणी के भाग के रूप में स्वीकार किया जाता है:

  • edit_post, read_postऔर delete_postमेटा क्षमताएं हैं, जो आम तौर पर संदर्भ के आधार पर संबंधित आदिम क्षमताओं के लिए मैप की जाती हैं, जो कि पोस्ट को संपादित / पढ़ा / हटा दिया जा रहा है और उपयोगकर्ता या भूमिका की जाँच की जा रही है। इस प्रकार ये क्षमताएं आम तौर पर सीधे उपयोगकर्ताओं या भूमिकाओं को प्रदान नहीं की जाएंगी।

  • edit_posts - नियंत्रित करता है कि क्या इस पोस्ट प्रकार की वस्तुओं को संपादित किया जा सकता है।

  • edit_others_posts- नियंत्रित करता है कि क्या अन्य उपयोगकर्ताओं के स्वामित्व वाली इस प्रकार की वस्तुओं को संपादित किया जा सकता है। यदि पोस्ट प्रकार एक लेखक का समर्थन नहीं करता है, तो यह ऐसा व्यवहार करेगा edit_posts
  • publish_posts - इस पोस्ट के प्रकार के प्रकाशन की वस्तुओं को नियंत्रित करता है।
  • read_private_posts - नियंत्रित करता है कि क्या निजी वस्तुओं को पढ़ा जा सकता है।

इन चार आदिम क्षमताओं को विभिन्न स्थानों में कोर में जांचा जाता है। सात अन्य आदिम क्षमताएं भी हैं map_meta_cap(), जिन्हें सीधे कोर में संदर्भित नहीं किया गया है, सिवाय इसके कि तीन पूर्ववर्ती मेटा क्षमताओं को लेते हैं और उन्हें एक या एक से अधिक आदिम क्षमताओं में तब्दील कर देते हैं, जो तब संदर्भ के आधार पर उपयोगकर्ता या भूमिका के खिलाफ जांच की जानी चाहिए।

  • read - नियंत्रित करता है कि क्या इस प्रकार की वस्तुओं को पढ़ा जा सकता है।
  • delete_posts - नियंत्रित करता है कि क्या इस पोस्ट प्रकार की वस्तुओं को हटाया जा सकता है।
  • delete_private_posts - नियंत्रित करता है कि क्या निजी वस्तुओं को हटाया जा सकता है।
  • delete_published_posts - नियंत्रित करता है कि क्या प्रकाशित वस्तुओं को हटाया जा सकता है।
  • delete_others_posts- नियंत्रित करता है कि क्या अन्य उपयोगकर्ताओं के स्वामित्व वाली वस्तुओं को हटाया जा सकता है। यदि पोस्ट प्रकार एक लेखक का समर्थन नहीं करता है, तो यह ऐसा व्यवहार करेगा delete_posts
  • edit_private_posts - नियंत्रित करता है कि क्या निजी वस्तुओं को संपादित किया जा सकता है।
  • edit_published_posts - नियंत्रित करता है कि क्या प्रकाशित वस्तुओं को संपादित किया जा सकता है।

इन अतिरिक्त क्षमताओं का उपयोग केवल में किया जाता है map_meta_cap()। इस प्रकार, वे केवल डिफ़ॉल्ट रूप से असाइन किए जाते हैं यदि पोस्ट प्रकार को 'map_meta_cap'तर्क के साथ पंजीकृत किया जाता है true(डिफ़ॉल्ट है false)।

अपने पंजीकरण तर्कों में जोड़ें:

'capabilities' => array(
    'edit_post'          => 'update_core',
    'read_post'          => 'update_core',
    'delete_post'        => 'update_core',
    'edit_posts'         => 'update_core',
    'edit_others_posts'  => 'update_core',
    'delete_posts'       => 'update_core',
    'publish_posts'      => 'update_core',
    'read_private_posts' => 'update_core'
),

आप एक ही काम कैसे करेंगे लेकिन प्रशासकों और संपादकों को सीपीटी का उपयोग करने की अनुमति देते हैं?
urok93

@drtanz एक कस्टम क्षमता और फ़िल्टर दोनों दें user_has_cap। एक उदाहरण के लिए इस उत्तर को देखें ।
FUXIA

क्या मैं इसे आपके द्वारा सुझाए गए तरीके से कर सकता हूं, लेकिन update_core के बजाय manage_links क्षमता (एडिम्न्स और एडिटर्स के बीच साझा) डाल सकते हैं?
urok93

@drtanz हाँ, लेकिन मैं एक कस्टम क्षमता का उपयोग करूंगा। लिंक प्रबंधक को अंततः हटा दिया जाएगा, और आपको नहीं पता कि तब असाइन की गई क्षमताओं का क्या होता है।
FUXIA

2
अपडेट_कोर के बारे में ध्यान दें; केवल एकल साइट संस्थापन के व्यवस्थापकों के पास यह कैपबिलिटी है। मल्टीसाइट में, केवल सुपर एडमिन के पास ही यह अक्षमता है।
संख्या
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.