WordPress Role Manager – WordPress के Roles काफी Flexible होते हैं और एक Plugin द्वारा हम इसे अपनी जरूरत के अनुसार Modify कर सकते हैं। इस Section में हम इसी विषय में चर्चा करेंगे कि किस प्रकार से Existing Roles को Modify किया जा सकता है, New Roles Create किए जा सकते हैं और किसी Existing या Newly Created Role के साथ Capabilities को Add किया जा सकता है।
यहां ये बात ध्यान रखने वाली है कि Roles के साथ हम जो भी Customization करते हैं, वह WordPress Database में Save होता है। इसलिए यदि हमारा Plugin किसी Role में कोई Change करता है, तो Plugin को Deactivate करने पर वह Change WordPress Database में Automatically Undo नहीं होताए बल्कि Changes को Undo करने के लिए हमें हमारे Plugin Codes के माध्यम से ही Deactivation के दौरान Custom Capabilities को फिर से Remove करना होता है और जिस Role के साथ कोई User Assigned नहीं किया गया होताए उसे Manually Remove करना होता है।
Creating New Role
WordPress हमें ये सुविधा Provide करता है कि हम Plugin या Theme के माध्यम से Custom Roles Create कर सकते हैं और किसी Custom Role को Create करने का सबसे बेहतर समय तब होता है जब हम हमारे Plugin या Theme को Activate करते हैं।
Role Creation का काम केवल एक ही बार किया जाना होता है, इसलिए Custom Role Create करते समय हमें ऐसे Hook को Use करना होता है, जो केवल एक ही बार Fire हो और केवल एक ही बार Fire होने वाला Hook Plugin या Theme Activation ही होता है।
add_role( $role, $display_name, $capabilities ) API Function
ये API Function एक Plugin Developer के रूप में हमें अपने WordPress System में एक नया Role Add करने की सुविधा Provide करते हैं। ये Function तीन Parameters Accept करता है। जबकि Return Value के रूप में एक WP_Role Object Return करता है जबकि यदि WordPress System में Custom Role Successful तरीके से Create न हो, तो ये API Function null Return करता है।
इस API Function में $role के रूप में हमें हमारे Newly Create किए जा रहे Custom Role का नाम Specify करना होता है। ये नाम एक Key की तरह Treat होता है इसलिए इसमें केवल Alphanumerical Characters या Underscore का ही प्रयोग किया जा सकता है।
$display_name Parameter के रूप में हम हमारे Newly Create किए जाने वाले Role का एक नाम यानी Label Specify करते हैं। ये वह नाम होता है, जिसे Public Facing Areas में Use किया जाता है।
$capabilities के रूप में Capabilities का एक Array Specify किया जाता है जो कि Newly Create होने वाले Role को Assign किया जाता है। जबकि Newly Created Role के साथ हम Capabilities को जरूरत के अनुसार बाद में भी Add या Remove कर सकते हैं।
हम इस API Function का प्रयोग करते हुए जो भी नया Role Create करते हैं, उसकी Information WordPress Database के Options Table में “wp_user_roles” नाम के Filed के साथ Save होता है।
इसलिए इस Field को उस समय उपयोग में लिया जा सकता है, जब हम अपने Plugin या Theme के Activation के दौरान अपने Role को Add या Delete करने के बारे में जानना चाहते हैं कि Specified Role पहले से Exist है या नहीं।
उदाहरण के लिए यदि हम WordPress System को एक Forum की तरह Use करना चाहते हैं, जिसमें हम Forum Administrator, Forum Moderator, Forum Member, Forum Suspended, Forum Subscribers व Forum Readers Create करना चाहते हैं, तो इस जरूरत को पूरा करने के लिए हम इस API Function को निम्नानुसार तरीके से Define कर सकते हैं:
/* Create the forum administrator role. */
add_role( ‘forum_administrator‘, ‘Forum Administrator‘, array( ‘read‘ ) );
/* Create the forum moderator role. */
add_role( ‘forum_moderator‘, ‘Forum Moderator‘, array( ‘read‘ ) );
/* Create the forum member role. */
add_role( ‘forum_member‘, ‘Forum Member‘, array( ‘read‘ ) );
/* Create the forum suspended role. */
add_role( ‘forum_suspended‘, ‘Forum Suspended‘, array( ‘read‘ ) );
/* Create the forum subscribers role. */
add_role( ‘forum_subscribers‘, ‘Forum Subscribers‘, array( ‘read‘ ) );
/* Create the forum reader role. */
add_role( ‘forum_reader‘, ‘Forum Reader‘, array( ‘read‘ ) );
जब हम इस प्रकार से कोई Role Add करते हैं, तो वे Roles हमें WordPress Dashboard Panel में “User Profile” Option के अन्तर्गत निम्न चित्रानुसार दिखाई दे सकते हैं:
उपरोक्त Code में हमने Newly Create होने वाले Role के साथ केवल एक ही Capability “read” को Specify किया है। जबकि हम हमारी जरूरत के अनुसार उन सभी Capabilities को Specify कर सकते हैं, जिन्हें WordPress द्वारा Default रूप से विभिन्न प्रकार के Roles के साथ Available करवाया जाता है अथवा हम Custom Capabilities को भी Specify कर सकते हैं। जैसे:
/* Create the forum administrator role. */ add_role( 'forum_administrator', 'Forum Administrator', array( 'read'='true', 'edit_posts'='true', 'delete_posts'='false' ) );
जब हम कोई नया Custom Role Add या Modify करते हैं, तब ये जरूरी होता है कि Global $wp_roles Available हो। साथ ही जब हम add_role() API Function का प्रयोग करते हुए किसी Role को Create कर लेते हैं, उसके बाद यदि हम उसी Statement को फिर से Re-Execute कर दें, तो उस स्थिति में add_role() API Function पहले से Existing Capabilities को नई Capabilities List के साथ Update करेगा, ऐसा हमेंशा जरूरी नहीं होता। क्योंकि इस API Function को दोबारा Execute करने पर यदि Specified Role, WordPress Database में पहले से Exist हो, तो ये API Function Short-Circuit हो जाता है। इस स्थिति से बचने के लिए add_role() API Function को “remove_role() API Function के साथ Use किया जाता है।
Deleting a Role
किसी Role का Delete करना भी उतना ही आसान होता है, जितना किसी Custom Role को Create करना। हालांकि जब हम किसी Role को Delete करना चाहते हैं, तब सबसे पहले हमें ये Check करना जरूरी होता है कि Delete किए जाने वाले Role के साथ कोई भी User Associated न हो। यदि ऐसा होता है, तो इस प्रकार के Role को Delete करते ही हमारा Plugin Crash हो जाता है।
किसी Custom Role को Delete करने का सबसे उपयुक्त समय तब होता है जब हम हमारे उस Plugin को Deactivate कर रहे होते हैं, जिसके माध्यम से किसी Custom Role को Create किया गया होता है।
चूंकि जिस तरह से किसी Role को Plugin या Theme के Activation के समय ही केवल एक बार Create किया जाता है, ठीक उसी तरह से उस Role को उसके Plugin को Deactivate करते समय केवल एक ही बार Delete किया जाना चाहिए।
remove_role( $role ) API Function
इस API Function द्वारा हम किसी Specific Role को Remove करते हैं। ये API Function एक Single Parameter के रूप में $role को Accept करता है, जो कि उस Role का नाम होता है, जिसे Remove किया जाना है। ये नाम वास्तव में वह नाम होता है, जिसे add_role() API Function में Newly Create होने वाले Role के Key के रूप में Specify किया जाता है।
उदाहरण के लिए यदि हम हमारे WordPress System से forum_moderator नाम के Role को Remove करना चाहें, तो इस जरूरत को पूरा करने के लिए हम remove_role() को निम्नानुसार तरीके से User कर सकते हैं:
/* Remove the forum moderator role. */
remove_role( ‘forum_moderator‘ );
जबकि किसी Role को Delete करने से पहले यदि हम इस बात को Check करना चाहें कि क्या कोई Specific Role Exist है या नहीं, तो उस स्थिति में हमें get_users() API Function को Use करना होता है। यदि ये API Function कोई User Return नहीं करताए तो उस स्थिति में हम किसी Specific Role को Remove कर सकते हैं, अन्यथा किसी भी User के उस Role के साथ Assigned होने की स्थिति में उस Specified Role को Delete होने से रोका जाना चाहिए और इस जरूरत को हम निम्नानुसार पूरा कर सकते हैं:
add_action( 'admin_init', 'remove_forum_moderator' ); function remove_forum_moderator() { /* Get at least one user with the forum moderator role. */ $users = get_users( array( 'role' => 'forum_moderator', 'number' => 1 ) ); /* Check if there are no forum moderators. */ if ( empty( $users ) ) { /* Remove the forum moderator role. */ remove_role( 'forum_moderator' ); } }
Adding Capabilities to Role
get_role( $role ) API Function
add_cap( WP_Role, $capability, $grant ) API Function
Removing Capabilities from Role
remove_cap(WP_Role, $capability, $grant) API Function
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Advance WordPress in Hindi | Page: 835 | Format: PDF