WP_Query Other Methods – पिछले Section में Discuss किए गए WordPress के इन पांच API Functions को “The Loop” Functions के रूप में जाना जाता है, क्योंकि किसी भी तरह की User Request को पूरा करने के लिए ये पांच Functions ही WordPress Database से Query करके Return होने वाले Result के आधार पर $wp_query Object की विभिन्न Properties को Setup करते हैं और इस Object के माध्यम से posts Property में Stored Posts/Pages की Looping करके Response के रूप में Required Output Generate करते हैं।
इनके अलावा WordPress की इस WP_Query Class में कुछ और API Functions को Define किया गया है, जिनका प्रयोग अन्य प्रकार की Requirements को पूरा करने के लिए किया जा सकता है।
get_query_var( $var ) API Function
इस Function का प्रयोग करके हम WP_Query Class के $wp_query Object की $query_vars Property से उस Variable के मान को Access कर सकते हैं, जिसे इस Function में $var Argument के रूप में Specify किया जाता है।
$query_vars Property, $wp_query Object का एक Array होता है, जिसमें Current Query के Fire होने के बाद जो Result Generate होता है, उस Returned Result के विभिन्न मान एक Associative Array के रूप में Available रहते हैं। इन मानों को get_query_var() API Function में Argument के रूप में Key Specify करके Access कर सकते हैं। इस Method को भी /wp-includes/query.php File में निम्नानुसार Define किया गया है:
File Name: /wp-includes/query.php function get_query_var($var) { global $wp_query; return $wp_query->get($var); }
जैसाकि इस API Function के Code में हम देख सकते हैं कि ये Function Internally WP_Query Class के get() Method को ही Call करता है, इसलिए यदि हम चाहें तो इस Function के स्थान पर $wp_query Object के get() Method का भी प्रयोग कर सकते हैं।
get( $var ) Method
WordPress में मूल रूप से दो तरह के Query Variables को Define किया गया है, जिन्हें Public Query Vars व Private Query Vars के नाम से जानते हैं। Public Query Vars को किसी भी URL की Query String में निम्नानुसार Directly Specify किया जा सकता है:
https://www.bccfalna.com/?var1=value1&var2=value2
लेकिन Private Query Vars को उपरोक्तानुसार Directly किसी URL में Specify नहीं किया जा सकता। हालांकि WordPress इन Private Query Vars को उस स्थिति में Accept कर लेता है, जब इन Private Query Vars को किसी URL में या किसी Query में Pass नहीं किया जाता बल्कि सीधे ही किसी Query में Specify किया जाता है। जैसे:
query_posts(‘var1=value1’);
इस प्रकार से जब User, WordPress Powered Blog/Site से किसी Resource (Page/Post) की Request करता है, तो Request के रूप में वह अपने Web Browser के Addressbar में जो URL Use करता है या वह जिस Hyperlink पर Click करता है, उस URL में Required Resource की Information एक Query String के रूप में WordPress पर पहुंचता है।
परिणामस्वरूप WordPress Engine, Request के रूप में आने वाले URL से विभिन्न Query Variables को अलग करके उनके आधार पर SQL Query Create करता है और उस Query में URL में Specified Query Variables को Use करता है, ताकि User का Requested Resource Generate होकर Response के रूप में उसे प्राप्त हो सके।
Request के रूप में आने वाले URL में जो Query Variables Specified होते हैं, उन्हीं के आधार पर WordPress Engine $wp_query Object के query_vars Property को Initialize करता है।
WordPress में Defined विभिन्न Public व Private Query Vars को हम निम्नानुसार Specify कर सकते हैं:
हम किसी भी Public Query Var को निम्नानुसार URL में Directly Specify कर सकते हैं:
https://www.bccfalna.com/tag=cprogramming
ये URL WordPress Engine को केवल उन Posts को Database से Retrieve करने का Instruction देगा, जिनके साथ cprogramming Tag को Specify किया गया है।
परिणामस्वरूप WordPress जब उपरोक्त Query के अनुसार केवल cprogramming Tag वाले Posts को Retrieve करने के लिए SQL Query Create करेगा, तो उस SQL Query से Return होने वाले सभी केवल cprogramming Tag से सम्बंधित होंगे। लेकिन हम किसी भी Private Query Var को इस तरह से किसी URL में Directly Specify करके Custom Posts Return नहीं करवा सकते।
User जब भी URL या Hyperlink के माध्यम से कोई Request Perform करता है, उस Request की विभिन्न Information WP_Query Class के $wp_query Object की query_vars Property में एक Associative Array के रूप में Store हो जाते हैं। इस Method का प्रयोग करके हम इस query_vars Property में Stored विभिन्न प्रकार की Query String Related Values को Access कर सकते हैं। इस Method को /wp-includes/query.php File में निम्नानुसार Define किया गया है:
File Name: /wp-includes/query.php function get($query_var) { if ( isset($this->query_vars[$query_var]) ) return $this->query_vars[$query_var]; return ''; }
ये Method Argument के रूप में उस Query Var का नाम Accept करता है, जिसकी Value को Return करवाना होता है। जब ये Method Execute होता है, तो सबसे पहले if Statement द्वारा इस बात को Check करता है कि क्या Argument के रूप में Specified $query_var नाम का Key $wp_query Object में Exist है या नहीं। यदि ये Key Exist होता है, तो ये Method उस Key की Value Return कर देता है, अन्यथा ये Method एक Empty String Return करता है।
उदाहरण के लिए जब User किसी Request को Perform करता है और उस Request से Related बहुत सारे Post/Page होते हैं, तब WordPress उन सभी Posts/Pages का एक ही Web Page पर Render नहीं करता बल्कि Pagination करके एक से ज्यादा Pages पर Render करता है। इस स्थिति में यदि हम ये जानना चाहें कि Currently हम किस Page पर हैं, तो ये जानकारी प्राप्त करने के लिए इस Method का प्रयोग निम्नानुसार कर सकते है:
File Name: wp-content/themes/bccfalna/index.php <!DOCTYPE html> <html> <head> <title>BccFalna.com : TechTalks in Hindi</title> </head> <body> <h1>Currently Browsing Page <?php echo $wp_query->get('paged'); ?></h1> </body> </html>
जब हम इस Modified index.php Webpage को http://lopcalhost/wp/page/2/ URL द्वारा Web Browser में Load करते हैं, तो हमें निम्नानुसार Output प्राप्त होता है:
इस तरह से हम get() Method का प्रयोग करके Currently Requested URL के Query Variables को $wp_query Object से Access कर सकते हैं।
चूंकि get_query_var() API Function भी Internally get() Method को ही Use करता है, इसलिए यदि हम चाहें तो अपने उपरोक्त Code को निम्नानुसार भी Modify कर सकते हैं:
File Name: wp-content/themes/bccfalna/index.php <!DOCTYPE html> <html> <head> <title>BccFalna.com : TechTalks in Hindi</title> </head> <body> <h1>Currently Browsing Page <?php echo get_query_var('paged'); ?></h1> </body> </html>
set( $query_var, $value ) Method
चूंकि हम जानते हैं कि User जब भी URL या Hyperlink के माध्यम से कोई Request Perform करता है, उस Request की विभिन्न Information WP_Query Class के $wp_query Object की query_vars Property में एक Associative Array के रूप में Store हो जाते हैं। इसलिए WordPress के इस Method का प्रयोग करके हम Current Request के URL में Specified Query String के विभिन्न Query Variables के मानों को Change कर सकते हैं। इस Method को भी /wp-includes/query.php File में निम्नानुसार Define किया गया है:
File Name: /wp-includes/query.php function set($query_var, $value) { $this->query_vars[$query_var] = $value; }
हमें Currently Requested URL की Query String में Specified विभिन्न Query Variables में से जिस Query Variable का मान Change करना हो, उसे इस Method में First Argument के रूप में Specify करते हैं, जबकि नए मान को दूसरे Argument के रूप में Specify करते हैं। इस Method की Working को हम निम्न Example द्वारा समझ सकते हैं, जहां हमने हमारी Theme के index.php File को Modify किया है:
File Name: wp-content/themes/bccfalna/index.php <!DOCTYPE html> <html> <head> <title><?php bloginfo('name'); ?></title> </head> <body> <h1>Currently Browsing Page <?php echo get_query_var('paged'); ?></h1> <h1>Change Browsing Page <?php echo $wp_query->set('paged', 10); ?></h1> <h1>After Changing Browsing Page <?php echo get_query_var('paged'); ?></h1> </body> </html>
जब हम इस Webpage को http://localhost/wp/page/2/ URL द्वारा Web Browser में Load करते हैं, तो हमें निम्नानुसार Output प्राप्त होता है:
जैसाकि इस Output में हम देख सकते हैं कि User Currently Pagination के दूसरे Page को देख रहा है, क्योंकि Web Browser के Addressbar में Specified URL में /page/2/ Specified है।
लेकिन फिर हमने set() Method का प्रयोग करके Currently Navigate होने वाले Page को Change करके 10 कर दिया है, इसीलिए Output की अन्तिम Line में अब हमें Currently Browsing Page का मान 10 दिखाई दे रहा है
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Advance WordPress in Hindi | Page: 835 | Format: PDF