भूमिकाओं और क्षमताओं को जोड़ने पर मुझे क्या कार्रवाई करनी चाहिए?


10

मैं एक नई कस्टम भूमिका स्थापित करने और मौजूदा भूमिकाओं के लिए एक नई क्षमता संलग्न करने के लिए add_role () और $ भूमिका-> add_cap () का उपयोग करने जा रहा हूं।

मैं सोच रहा हूं कि ऐसा करने के लिए सबसे अच्छी जगह कहां है? जाहिर है मैं इसे सीधे कार्यों के अंदर कर सकता हूं। पीएपी और इसके साथ किया जा सकता है। लेकिन क्या यह सबसे अच्छा अभ्यास है? क्या मुझे केवल admin_init पर ऐसा करने की आवश्यकता है? या क्या मुझे यह करना चाहिए?

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

आपके सहयोग के लिए धन्यवाद!

जवाबों:


10

भूमिका और क्षमताओं को जोड़ते समय आपको केवल एक बार कोड को चलाने की आवश्यकता होती है क्योंकि भूमिकाएँ और क्षमताएं डेटाबेस में सहेजने के समय add_roleया उपयोग करते समय बच जाती हैं, ->add_capठीक उसी तरह जैसे एंडी ने कहा कि आप after_setup_themeइस तरह की कार्रवाई के लिए उपयोग कर सकते हैं लेकिन किसी प्रकार की जाँच को जोड़ सकते हैं। एक बार चलता है, जैसे register_activation_hook या विकल्पों का उपयोग करना:

add_action('after_setup_theme','my_add_role_function');

function my_add_role_function(){
    $roles_set = get_option('my_roles_are_set');
    if(!$roles_set){
        add_role('my_role', 'my_roleUser', array(
            'read' => true, // True allows that capability, False specifically removes it.
            'edit_posts' => true,
            'delete_posts' => true,
            'upload_files' => true 
        ));
        update_option('my_roles_are_set',true);
    }
}

इसके लिए धन्यवाद। क्या यह सच है कि add_role या add_cap ALWAYS डेटाबेस का लाभ उठाता है? जब मैंने स्रोत कोड में खोदा तो ऐसा लगा कि यह हमेशा ऐसा नहीं था - यानी: WP_Roles के अधिकांश तरीकों में, अगर ($ यह-> use_db) के लिए एक जांच है, जो मुझे लगता है कि संभावना है कि भूमिकाएं हमेशा डीबी में संग्रहीत नहीं किया जा सकता है।
टॉम ऑस्टर

इसके अलावा, विकल्पों का उपयोग करते हुए एक ध्वज को स्थापित करने के बजाय, जो मुझे विशेष रूप से मापनीय नहीं बनाता है, क्या केवल भूमिका बनाने के लिए कोई प्रश्न नहीं है? असफल होने पर, भूमिका को फिर से परिभाषित करने के लिए यह क्या नुकसान पहुंचाएगा यदि यह पहले से ही है? क्या आपको एक डुप्लिकेट भूमिका मिलेगी या यह सिर्फ अनदेखी करेगा? क्षमताओं को फिर से देखते हुए। अगर मैं इसे add_role के तहत देखता हूं: यदि (isset ($ यह-> भूमिकाएँ [$ भूमिका])); जो यह इंगित करता है कि यह भूमिका की नकल नहीं करेगा ताकि कोई नुकसान न हो।
टॉम ऑलर

निश्चित नहीं है कि आपका क्या मतलब है लेकिन $use_db = true;WP_Roles वर्ग में दोषपूर्ण है। और विकल्पों का उपयोग करते हुए एक ध्वज को स्थापित करने के लिए, यह एक उदाहरण है, आप उपयोग कर सकते हैं register_activation_hookलेकिन विचार यह है कि आपका कोड केवल एक बार चलेगा और इस तरह से आप अपने आप को समय बचा सकते हैं।
बेनटर्नट

मैंने कभी भी इसके माध्यम से नहीं देखा है, लेकिन यह मुझे चौंकाता है कि यह एक प्लगइन में भूमिका परिवर्तन करने के लिए समझ में आता है और फिर सक्रियण / निष्क्रियता हुक का लाभ उठाकर केवल एक बार परिवर्तनों को ट्रिगर कर सकता है। क्या कभी कोई उस मार्ग से नीचे गया है?
mrwweb

@mrwweb जो ठीक
ठाक

7

प्लगइन्स के लिए, मुझे इसके plugins_loadedलिए उपयोग करने में सफलता मिली है । थीम के लिए, मैं उपयोग करूंगा after_setup_theme

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.