उपयोगकर्ता भूमिका में क्षमता कैसे जोड़ें?


14

मैं एक Wordpress नेटवर्क का प्रबंधन कर रहा हूं और पहले से निर्धारित उपयोगकर्ता भूमिका व्यवस्थापक के लिए अनफ़िल्टर्ड_ html उपयोगकर्ता क्षमता जोड़ना चाहूंगा। Wordpress के एक मानक इंस्टॉलेशन में एडमिन अकाउंट में पहले से ही यह क्षमता होगी लेकिन MU इंस्टॉलेशन में केवल सुपर एडमिन ही इस क्षमता को वहन कर सकते हैं। वर्डप्रेस रोल्स और क्षमताएँ

मैं किसी विषय या प्लगइन में से व्यवस्थापक भूमिका कैसे बढ़ा सकता हूं?


1
wordpress.org/extend/plugins/unfiltered-mu ऐसा लगता है कि यह मदद कर सकता है। लेकिन यह व्यवस्थापक और संपादकों के लिए काम करता है। यदि यह वांछित नहीं है तो शायद कोड को थोड़ा छोटा किया जा सकता है?
रेव। वूडू


@Rev। वूडू सुझाव के लिए धन्यवाद। इसने इस विषय पर कुछ प्रकाश डालने में मदद की क्योंकि अनफिल्टर्ड_एचटीएम की क्षमता को जोड़ना एडमिन या सुपर एडमिन के अलावा किसी भूमिका की अनुमति देने के लिए पर्याप्त नहीं है, आदि पोस्ट एम्बेड करने की क्षमता, कुंजी अनसेफ फ़िल्टरिंग / हुकिंग केएसईएस: ks_remove_filters ()
जॉनीबोजैंगल्स

एक विस्तार ब्लॉग: goo.gl/xNuafH
सुरेश कमरुशी

जवाबों:


14

आप WP_Role वर्ग का उपयोग कर सकते हैं ,

// get the the role object
$role_object = get_role( $role_name );

// add $cap capability to this role object
$role_object->add_cap( $capability_name );

// remove $cap capability from this role object
$role_object->remove_cap( $capability_name );

तो अपने मूल प्रश्न को संबोधित करने के लिए कि कैसे Admins को SCRIPT और IFRAME टैग को पोस्ट सामग्री में दर्ज करने के लिए सक्षम किया जाए, आप 'अनफिल्टर्ड_एचटीएमएच' क्षमता की तलाश कर रहे हैं, जो कि मल्टीसाइट में केवल सुपर एडमिंस को दी जाती है।

// get the the role object
$admin_role = get_role( 'administrator' );
// grant the unfiltered_html capability
$admin_role->add_cap( 'unfiltered_html', true );

या आप इसे अपने कार्यों में एक बार चला सकते हैं:

/* Roles & Capabilities */
add_role('professional', 'Professional User', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    //'edit_published_posts' => true,
    //'publish_posts' => true,
    //'edit_files' => true,
    'upload_files' => true //last in array needs no comma!
));

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

मुझे यह भी दिलचस्पी है कि यदि आप हमें बताने के लिए स्वतंत्र हैं, तो आप WP_Role क्लास को कैसे निष्पादित करेंगे। धन्यवाद
Osu

1
@Jonnybojagles & @Osu, इसे देखें: अंतिम गाइड टू रोल्स एंड कैपेबिलिटीज garyc40.com/2010/04/ultimate-guide-to-roles-and-capabilities
फिलिप्पुस

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

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

2

सुपर एडमिन या एडमिन के अलावा किसी अन्य भूमिका की अनुमति देने के लिए (यदि वर्डप्रेस इंस्टॉलेशन एक नेटवर्क / एमयू इंस्टेंस है या नहीं) पोस्ट में अनफ़िल्टर्ड html जोड़ने के लिए या वर्डप्रेस केएसईएस फिल्टर को हटाना होगा।

जांचें कि क्या किसी उपयोगकर्ता की कोई विशेष क्षमता है।

if ( current_user_can( 'unfiltered_html' ) ) {  }

यदि ऐसा है तो केएसई को हटा दें

kses_remove_filters();

इस कार्यक्षमता को पहले से ही अनफ़िल्टर्ड-म्यू में लपेटा गया है, जिससे एडमिल्स और संपादकों को अनफ़िल्टर्ड html को जोड़ने की अनुमति मिलती है।


कार्यक्षमता को एक प्लगइन रजिस्टर और डेरेगिस्टर में भी लपेटा जाता है ताकि तर्क को प्रत्येक WP उदाहरण पर पूर्वनिर्मित करने की आवश्यकता न हो।
जॉनीबोजैंगल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.