WordPress User API – WordPress को हम एक Blog की तरह ही नहीं बल्कि एक CMS (Content Management System) की तरह भी Use कर सकते हैं, जिसमें Multiple Users समान Framework को अलग-अलग तरह की जरूरतों को पूरा करने के लिए अलग-अलग Roles व Capabilities के साथ Access कर सकते हैं।
इसलिए जब हम ऐसे Plugins Develop कर रहे होते हैं, जो अलग-अलग Roles व Capabilities वाले Users के लिए अलग-अलग तरह से काम करते हैं, तो उस स्थिति में हमें WordPress द्वारा Provided Users API को Use करना होता है।
WordPress Framework को Private Membership Sites, Social Networks, Online Newspapers, Medical Databases, Education Centers आदि कई प्रकार की जरूरतों को पूरा करने के लिए विभिन्न तरीकों से Use किया जाता है। इसलिए इन विभिन्न प्रकार की जरूरतों के लिए जब हम WordPress Framework को Use करते हैं, तब किसी Specific Type की Requirement को पूरा करने के लिए Plugin Develop करते समय हमें हमारे Plugin में Users व Permissions को बेहतर तरीके से Handle करने की जरूरत पडती है।
WordPress Framework का प्रयोग करते हुए इस प्रकार की Sites के लिए Plugin Create करते समय हमें इस बात का ध्यान रखना जरूरी होता है कि हम Correct WordPress API Functions का प्रयोग करें, ताकि किसी भी स्थिति में किसी ऐसे User के सामने वह Data Display न हो, जिसके लिए उस User के पास पर्याप्त Permission नहीं है।
पुस्तक के इस Section में हम WordPress Users, Roles व Capabilities System को उपयुक्त तरीके से Use करने के बारे में ही Detail से समझने की कोशिश करेंगे और जानेंगे कि किस प्रकार से WordPress Environment के अन्तर्गत ये सभी एक दूसरे के साथ Interact करते हुए किसी Specific Type की Requirement को पूरा करने हेतु सहयोग करते हैं।
Working with WordPress Users
वे लोग जो किसी WordPress Site पर Register करते हैं, WordPress के Registered Users होते हैं और इन Registered Users का एक Unique Username व Password होता है, जिसके माध्यम से वे WordPress के Specific Role वाले Users की Category में Login करते हैं। यानी हर Registered User का WordPress Installation में एक Personal Account होता है।
यहां ये बात ध्यान रखने वाली है कि User व Visitor दोनों में अन्तर होता है। वे लोग जो Website को देखते हैं, Visitor होते हैं, जबकि वे लोग जो Website पर Register करके अपने WordPress Account में Login करने में सक्षम होते हैं, User होते हैं।
हर WordPress Installation में कम से कम एक User जरूर होता है जो कि वह व्यक्ति होता है, जिसने WordPress को Install व Setup किया जाता है। इस User के लिए Create होने वाला WordPress Account सामान्यत: “admin” Account होता है।
User Functions
WordPress हमें कई API Functions Provide करता है, जिनका प्रयोग WordPress Database में Registered Users के साथ विभिन्न प्रकार की प्रक्रियाऐं करने के लिए किया जा सकता है। इन User Related विभिन्न API Functions को अग्रानुसार Discuss किया गया है:
is_user_logged_in() API Function
ये API Function एक Conditional Tag है जो इस बात को Check करता है कि जिस User ने Web Browser के माध्यम से Request Perform किया है, वह User Currently Logged In है या नहीं। ये Function कोई Parameter Accept नहीं करता लेकिन Current User के ID के आधार पर true या false के रूप में एक Boolean मान Return करता है, जो User के Logged-In होने की स्थिति को Represent करता है। यानी यदि Current User का कोई User ID हो, तो वह User Logged-In माना जाता है, जबकि User ID के Exist न होने की स्थिति में] User को Logged-Out माना जाता है।
ये API Function एक Pluggable API Function है। इसलिए एक नया Function Create करते हुए इसकी Default Functionality को Overwrite किया जा सकता है। जो लोग Logged-In होते हैं, उन्हें WordPress Environment के अन्तर्गत User कहा जाता है जबकि जो User Logged-in नहीं होते, उन्हें Visitor कहा जाता है। इस Function को बेहतर तरीके से समझने के लिए हम निम्नानुसार एक Plugin Create कर सकते हैं:
<?php /* *Plugin Name: User API *Plugin URI: https://www.bccfalna.com/wpplugins/user-api/ *Description: Learning User API *Author: Kuldeep Chand *Version: 1.0 *Author URI: https://www.bccfalna.com/ */ add_action( 'wp_footer', 'footer_user_logged_in' ); function footer_user_logged_in() { if ( is_user_logged_in() ) echo 'You are currently logged into this site.'; else echo 'You are not logged into the site.'; }
जब हम इस Plugin को Create करके Active करने के बाद Current WordPress Site/Blog के किसी Page को Visit करते हैं, तो Logged-In होने की स्थिति में Page/Post के Footer में हमें निम्नानुसार Message दिखाई देता है:
You are currently logged into this site.
जबकि Logged-In न होने की स्थिति में Page/Post के Footer में हमें निम्नानुसार दूसरा Message दिखाई देता है:
You are not logged into this site.
ये API Function काफी महत्वपूर्ण है क्योंकि इस Function का प्रयोग करते हुए हम Logged-In User के लिए किसी Specific Functionary को On कर सकते हैं, जबकि Logged-Out User के लिए कोई अन्य Message Display कर सकते हैं।
उदाहरण के लिए यदि हम चाहते हैं कि जो Users Logged-In हैं, केवल उन्हीं को किसी Downloadable File का Direct Download Link प्राप्त हो, जिसे Click करते ही वह उस File को Download कर सके। जबकि जो User Logged-In नहीं हैं, उन्हें Registration या Log-In करने से सम्बंधित Link दिखाई दे ताकि Login करके वे Logged-Out User भी उस File को Download कर सकें। इस Process को हमारी Website https://www.bccfalna.com/free-downloads/ पर Apply किया गया है।
get_users( $args ) API Function
ये API Function हमें WordPress Database के Users Table से $args Parameter के आधार पर Users की Query करने की सुविधा Provide करता है। जहां $args Parameter Arguments का एक Array होता है, जिसका प्रयोग इस Function द्वारा Return होने वाले Users की संख्या को Conditionally तय करने के लिए किया जाता है। इस API Function के Execute होने के बाद Users का एक Array Return होता है, जिसे हम किसी Specific Task को पूरा करने के लिए Use कर सकते हैं।
$args Parameter में हम विभिन्न प्रकार के Options Set करते हुए इस बात को Specify कर सकते हैं कि कौन-कौन से Users Return होंगे। जबकि यदि हम इस API Function को Use करते समय कोई Parameter Specify न करें, तो Default रूप से Users Table में Exist सभी Users की Information Return कर देता है। $args Array के विभिन्न Default Parameter निम्नानुसार होते हैं:
$args = array( 'blog_id' => $GLOBALS['blog_id'], 'role' => '', 'meta_key' => '', 'meta_value' => '', 'meta_compare' => '', 'meta_query' => array(), 'include' => array(), 'exclude' => array(), 'orderby' => 'login', 'order' => 'ASC', 'offset' => '', 'search' => '', 'number' => '', 'count_total' => false, 'fields' => 'all', 'who' => '' );
blog_id
यदि Current WordPress Installation पर Multisite Option Enabled हो, तो Currently जो Blog/Site Activated होता है, उसका ID इस Parameter के रूप में Specify करना होता है। जबकि यदि Multisite Option Enabled न हो, तो Current Site/Blog का ID ही इसमें Default रूप में Stored रहता है।
role
Default रूप से इसमें एक Empty String Store रहता है, जो Default रूप से सभी Roles को Use करता है। जबकि हम हमारी जरूरत के अनुसार इसमें किसी Specific Role को Specify कर सकते हैं।
meta_key
meta_key के रूप में हमें wp_usermeta Table से किसी Meta Value को Use किया जा सकता है। जबकि User का Meta Data Access करने के लिए हम WordPress के get_userdata() API Function को Use कर सकते हैं।
meta_value
meta_key के रूप में जिस Key को Specify किया गया है, उसकी Value को meta_value के रूप में Specify किया जाता है।
meta_compare
meta_value को किसी Specific Value से Compare करने के लिए हम विभिन्न Relational Operators ( ==, <, >, <=, >=, != ) को Use कर सकते हैं।
include
एक Array के रूप में हम जिन IDs को Specify करते हैं, केवल उन ID वाले Users के Data ही Return होते हैं। हालांकि हम include व exclude दोनों Arrays को एक साथ Use नहीं कर सकते।
exclude
एक Array के रूप में हम जिन IDs को Specify करते हैं, केवल उन ID वाले Users के Data को छोड कर सभी अन्य Users के Data Return होते हैं। हालांकि हम include व exclude दोनों Arrays को एक साथ Use नहीं कर सकते।
search
जब हमें किसी Particular User Data को उसके Email Address, URL, ID या Username के आधार पर Return करना हो, तब हम $wpdb->users के user_login, user_nicename, user_email, user_url व display_name Fields के माध्यम से किसी Particular User के Data को Access कर सकते हैं।
meta_query
यदि हमें meta_key/meta_value के आधार पर WP_Query Style में Multiple Users के Data को Access करना हो, तब हम meta_query को Specify कर सकते हैं।
orderby
ID, login, nicename, email, url, registered, display_name या post_count में से किसी Parameter को Specify करके हम Return होने वाले विभिन्न Users को Sorting कर सकते हैं।
order
Return होने वाले Users के क्रम को ASC या DESC Specify करके हम Ascending या Descending Order में Return कर सकते हैं।
offset
इसमें Specified मान के बराबर Users को छोडकर Table में Exist आगे के Users की Information को Return किया जाता है। उदाहरण के लिए यदि हम offset के रूप में 10 Specify करें, और Users Table में कुल 100 Users हों, तो Users Table के पहले 10 Users को छोडकर शेष सभी Users Return होंगे।
number
इस Parameter में हम जितनी संख्या Specify करते हैं, उतने ही Users Return होते हैं। जबकि Default रूप से Match होने वाले सभी Users के Data Return होते हैं।
fields
इस Parameter द्वारा हम इस बात को तय करते हैं कि Return होने वाले Array में कौन-कौन से Fields होंगे। इसका Default मान “all” होता है। जबकि यदि हम इसे “all_with_meta” Set करें, प्रत्येक User के Data के साथ उसके Metadata भी Return हो जाऐंगे जो कि Cached रहेंगे। हालांकि यदि Users की संख्या ज्यादा हो, तो उस स्थिति में ये Option Memory Problem Create कर सकता है।
चलिए, $args Parameter के विभिन्न Options के बारे में जानने के बाद अब हम इन Options के आधार पर get_users() API Function को Use करते हुए इसे Use करने के बारे में जानने की कोशिश करते हैं।
<?php /* *Plugin Name: User API *Plugin URI: https://www.bccfalna.com/wpplugins/user-api/ *Description: Learning User API *Author: Kuldeep Chand *Version: 1.0 *Author URI: https://www.bccfalna.com/ */ add_shortcode('All_Users', 'list_all_users' ); function list_all_users() { ?> <ul> <?php $blogusers = get_users(); foreach ($blogusers as $user) { echo '<li>' . $user->user_email . '</li>'; } ?> </ul> <?php }
इस Plugin Code में get_users() API Function को Use करते हुए Current Blog के सभी Registered Users को Retrieve किया गया है, जिन्हें WordPress Page/Post पर Display किया जा सके, इसके लिए हमने एक Shortcode Create किया है। इस Shortcode को हम जिस Page/Post पर Specify कर देते हैं, उस Page/Post पर Current WordPress Blog/Site पर Registered सभी Users का Email Address हमें दिखाई देने लगता है।
यदि हम चाहें तो किसी Particular Username वाले User का Email Address Return करने के लिए उपरोक्त Plugin के get_users() API Function के Statement को निम्नानुसार Modify कर सकते हैं:
$blogusers = get_users(‘search=bccfalna‘);
जब हम इस Statement को Specify करके अपने WordPress Page/Post को Refresh करते हैं, तो हमें केवल उसी User का Email Address प्राप्त होता है, जिसके Username को हमने “search” Option के साथ Specify किया है।
यदि हमें एक से ज्यादा Options को Specify करना हो, तो हमें विभिन्न Options को आपस में Connected रखने के लिए “&” का प्रयोग करना पडता है। जैसे:
$blogusers = get_users(‘blog_id=1&search=bccfalna‘);
इसी तरह से यदि हमें केवल उन Users के Email Address Return करने हों, जिनके Username, ID या Email Address की शुरूआत Character “b” से होती है, तो इस जरूरत को पूरा करने के लिए “search” Option के साथ हम “*” Character को Use कर सकते हैं। जैसे:
$blogusers = get_users(‘search=b*‘);
यदि हमें User की Information के साथ ही उसकी Meta Information की भी जरूरत हो, तो इस Plugin को निम्नानुसार तरीके से Modify कर सकते हैं:
add_shortcode('All_Users', 'list_all_users' ); function list_all_users() { ?> <ul> <?php $blogusers = get_users('search=k*&fields=all_with_meta'); echo "<pre>"; var_export($blogusers); echo "</pre>"; ?> </ul> <?php }
इस तरह से Plugin के Function को Modify करने के बाद जब हम अपने WordPress Page/Post को Refresh करते हैं, तो हमें निम्नानुसार Output प्राप्त होता है:
array ( 2 => WP_User::__set_state(array( 'data' => stdClass::__set_state(array( 'ID' => '2', 'user_login' => 'kuldeep', 'user_pass' => '$P$BMD7SNb3FrnNf8hzoKZV95dAdYne4C.', 'user_nicename' => 'kuldeep', 'user_email' => 'kuldeep06march@gmail.com', 'user_url' => '', 'user_registered' => '2014-01-12 09:28:06', 'user_activation_key' => '', 'user_status' => '0', 'display_name' => 'kuldeep', )), 'ID' => 2, 'caps' => array ( 'subscriber' => true, ), 'cap_key' => 'wp_capabilities', 'roles' => array ( 0 => 'subscriber', ), 'allcaps' => array ( 'read' => true, 'level_0' => true, 'subscriber' => true, ), 'filter' => NULL, )), )
इस Output द्वारा हम समझ सकते हैं कि निम्न Statement एक ऐसा Array Return करता है:
$blogusers = get_users(‘search=k*&fields=all_with_meta‘);
जिसमें उस User व उसकी सभी Meta Information है, जिसके Username की शुरूआत “k” Character से होती है।
count_users() API Function
इस Function का प्रयोग करके हम Current WordPress Site/Blog के कुल Registered Users की संख्या Count कर सकते हैं। ये API Function WordPress Site/Blog के सभी Registered Users की कुल संख्या तथा प्रत्येक Role के आधार पर Registered Users की Role-Wise कुल संख्या को Return कर सकता है।
ये API Function $strategy के रूप में एक Single Parameter Accept करता है जो इस बात को निश्चित करता है कि Users को किस प्रकार से Count करना है और time या memory के रूप में किस आधार पर Count करना है। जबकि इसका Default मान “time” होता है।
ये API Function “Grand Total” व Role String के साथ User Counts का एक Array Return करता है। इस API Function को Use करते हुए हम हमारे पिछले Plugin को ही निम्नानुसार Modify कर सकते हैं:
<?php /* *Plugin Name: User API *Plugin URI: https://www.bccfalna.com/wpplugins/user-api/ *Description: Learning User API *Author: Kuldeep Chand *Version: 1.0 *Author URI: https://www.bccfalna.com/ */ add_shortcode('All_Users', 'list_all_users' ); function list_all_users() { /* Get the user counts. */ $user_count = count_users(); /* Open an unordered list. */ echo '<ul class="user-counts">'; /* List the total number of users. */ echo '<li> Total users: ' . $user_count['total_users'] . '</li>'; /* Loop through each of the roles. */ foreach ( $user_count['avail_roles'] as $role => $count ) { /* List the role and its number of users. */ echo '<li>' . $role . ': ' . $count . '</li>'; } /* Close the unordered list. */ echo '</ul>'; }
जब हम अपने Plugin को उपरोक्तानुसार Modify करके Run करते हैं, तो हमें निम्नानुसार Output प्राप्त होता है:

यदि इस API Function द्वारा Return होने वाले Array के Content को देखना चाहें, तो हम हमारे उपरोक्त Function में var_dump() PHP Function को निम्नानुसार Use कर सकते हैं:
array(2) { ["total_users"]=> int(2) ["avail_roles"]=> array(2) {["administrator"]=> int(1) ["subscriber"]=> int(1)} }
इस प्रकार से हम समझ सकते हैं कि इस Function से Return होने वाले Array के “total_users” Key से Associated int(2) मान इस बात को Represent कर रहा है कि कुल दो Registered Users हैं। जबकि “avail_roles” के साथ Associated Array में एक Administrator Level का व एक Subscriber Level का User है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Advance WordPress in Hindi | Page: 835 | Format: PDF