WordPress Hooks Anatomy. To create WP Plugin/Theme, you must have to learn it.

जैसाकि हमने पिछले Section द्वारा समझ कि WordPress में दो तरह के Hooks होते हैं, जिन्हें Action HookFilter Hook कहा जाता है। जहां Action Hook हमें किसी Specific Execution Point पर किसी Custom Function Code को Execute करने की क्षमता Provide करता है, जबकि Filter Hook हमें Generate होने वाले Output को Web Browser में Render होने से पहले Manipulate करके Modify करने की क्षमता Provide करता है। चलिए, इन दोनों प्रकार के Hooks को Use करने के बारे में थोडा Detail से समझने की कोशिश करते हैं।

do_action() – Gateway to Fire Action Hooks

जब WordPress, किसी User या Admin की किसी Request को पूरा करने के लिए Initialization Process को Follow करता है या WordPress Platform में जब किसी Specific Type का Event Trigger होता है, तब Action Hook हमें किसी Specific Execution Point पर किसी Custom Function Code को Fire करने की सुविधा देता है।

लेकिन जब हम WordPress के Hooking System को Use करते हुए WordPress Platform के Core को अपनी जरूरत के अनुसार Modify करने के लिए अपने किसी Plugin में किसी Custom Function को किसी Hook के साथ Attach करते हैं, तब उस Plugin में Specified हमारा Function, Directly Execute नहीं होता। बल्कि हमारा Plugin हमारे Custom Function को Indirectly Execute करता है।

इस प्रक्रिया को समझने के लिए जरूरी है कि हम पहले do_action() नाम के WordPress API Function को समझें, जिसका Syntax निम्नानुसार होता है:

do_action( $tag, $arg = ‘ ‘ );

इस Function के पहले Argument के रूप में हमें किसी Action Hook का नाम Specify करना होता है, जिसके साथ हम किसी Custom Function को Attach करके Execute करना चाहते हैं। जबकि दूसरे Argument के रूप में हम Registered Actions को Pass करते हैं। दूसरे Argument के रूप में हम एक से ज्यादा Actions को भी Pass कर सकते हैं। जैसे:

do_action( $tag, $arg, $arg1, $arg2, $arg3  );

जबकि यदि हम चाहें तो इस Function को बिना दूसरा Argument Specify किए हुए भी Call कर सकते हैं।

do_action() Function को किसी भी तरह के Action Hook को Fire करने के लिए Use किया है। उदाहरण के लिए wp_head नाम के Hook को Fire करने पर इस Hook के साथ Attached Custom Function Code Exactly उस समय Execute होता है, जिस समय किसी Web Page का <head> Element पूरी तरह से Load हो चुका होता है और इस Hook के साथ Attached Custom Function Code पूरी तरह से Execute हो जाने के बाद ही Web Page के <body> Element के Codes का Execution शुरू होता है।

चूंकि do_action() Function किसी न किसी Hook को Fire करने का काम करता है, इसलिए हम हमारी जरूरत के अनुसार स्वयं के Hooks भी Create करके उन्हें किसी Particular Location पर Fire कर सकते हैं और उन Custom Hooks के साथ अपने किसी Custom Function Code को Define कर सकते हैं। परिणामस्वरूप जब हमारा Custom Hook Fire होगा, उस Hook के साथ Associated Custom Function Code भी Execute हो जाएगा।

यानी हम do_action() Function का प्रयोग किसी Hook को Trigger या Fire करने के लिए कर सकते हैं और जब कोई Hook Fire होता है, तब उस Hook से Attached Callback Queue Execute हो जाता है और उस Callback Queue में जितने भी Functions होते हैं, वे सभी उस Hook के Response में One by One Execute होने लगते हैं।

जब हम हमारा Custom WordPress Theme Create करते हैं, तब अपनी Theme में विभिन्न Locations पर do_action() Function का प्रयोग करके विभिन्न प्रकार के Hooks को Fire होने के लिए Set कर देते हैं, ताकि जब कभी भी हमें जरूरत पडे, हम उन Particular Positions पर Plugins या Theme के functions.php File में किसी Custom Function Codes को Specify करके Execute होने के लिए Define कर सकें।

add_action() – Action : The  Callback Function

तकनीकी रूप से देखेों तो WordPress Action एक Callback PHP Function होता है, जिसे किसी Action Hook के साथ Execute होने के लिए Register किया जाता है।

यानी WordPress में किसी Specific Situation को Hook या Event के रूप में Define किया जाता है। जब कोई Hook Fire होता है, उस Hook के साथ किसी Action यानी Callback Function को Register कर दिया जाता है। परिणामस्वरूप Hook के Fire होते ही उसके साथ Attached या Hooked Callback Function Execute हो जाता है।

किसी Hook के साथ जब तक किसी Callback Function को Hooked (Attached/Register) नहीं किया जाता, तब तक उस Hook के Fire होने पर वह Callback Function Execute नहीं होता।

यानी do_action() Function द्वारा जब कोई Hook Fire किया जाता है, तब उस Hook के Response में उसी स्थिति में कोई Custom Function Code Execute हो सकता है, जबकि उस Custom Function Code को पहले से ही उस Hook के साथ Register (Attached/Hooked) कर दिया गया हो और किसी Callback Function को किसी Hook के साथ Register करने के लिए हमें हमेंशा add_action() WordPress API Function को Use करना होता है, जिसका Syntax निम्नानुसार होता है:

add_action(‘hook_name’, ‘callback_function’, priority, ‘callback_function_arguments);

  • पहला Argument उस Event या Hook का नाम होता है, जिसके साथ हमारे Custom Function Code को Attach करना है। जैसे save_post, the_content, आदि,
  • जबकि दूसरे Argument के रूप में हमें उस Custom Callback Function का नाम Specify करना होता है, जिसके Code को हम Hook या Event के Trigger होने पर Execute करना चाहते हैं।

सामान्यत: दूसरे Argument के रूप में हम हमेंशा किसी Custom Function के नाम को Specify करते हैं। जिसे या तो किसी WordPress Theme की functions.php File में या फिर किसी Plugin File में Define किया गया होता है। लेकिन हम इस दूसरे Argument में Callback Function के रूप में किसी Core WordPress Function, या किसी Class का नाम अथवा Class के किसी Method का नाम भी Specify कर सकते हैं।

जब हम इन Functions के दूसरे Arguments के रूप में किसी Callback Functions का नाम Specify करते हैं, तब हमें Callback Function के नाम को एक String के रूप में Specify करना होता है। जैसे:

add_action(‘pre_post_save’, ‘my_function’);

लेकिन यदि हम Object Oriented Programming System Use करते हैं, तब हमें इन Functions के दूसरे Argument के रूप में किसी Class व उसके Execute होने वाले Callback Method, दोनों का नाम एक Array के रूप में Specify करना होता है। जैसे:

add_action( ‘pre_post_save‘, array(‘myClass’, ‘my_method’) );

हालांकि हम किसी Custom Code के माध्‍यम से WordPress Core Codes की Functionality को Modify करने के लिए Plugins Design कर सकते हैं। लेकिन कई बार हम जिस Functionality को प्राप्त करना चाहते हैं, वह Functionality केवल Current Theme के लिए ही उपयोगी होती है।

इसलिए इस प्रकार की Functionality, जो कि केवल Current Theme के लिए ही Useful हो, हमें किसी Plugin के रूप में Define करने की जरूरत नहीं होती। बल्कि हम हमारी Theme में functions.php नाम की एक File Create करके उसमें भी इन Theme Specific Functionality Related Codes लिख सकते हैं और अपनी Theme को Specific तरीके से Customize करने के लिए Program कर सकते हैं।

add_action() API Functions इन दो Compulsory Arguments के अलावा दो और Optional Arguments भी Accept करता हैं। जहां तीसरा Argument एक Integer Number होता है, जो कि दूसरे Argument में Specified Callback Function के Execution की Priority Set करता है। यहां Specify किया गया Number जितना छोटा होता है, Priority उतनी ही ज्यादा होती है जबकि सामान्य Priority Number का मान 10 होता है।

इस तीसरे Argument में Specified Number उस समय महत्वपूर्ण Role Play करता है जब किसी एक ही Hook के साथ एक से ज्यादा Callback Functions Attached होते हैं और किसी एक Function के Execute होने से पहले उसे किसी ऐसे मान की जरूरत होती है, जो कि किसी

दूसरे Function के Execution के बाद Generate होता है। परिणामस्वरूप दूसरे Function को पहले Execute करना जरूरी होता है, ताकि पहले Function के Execute होने से पहले उसका वांछित Data उसे प्राप्त हो सके।

WordPress Hooks पूरे WordPress Core में फैले हुए हैं, जो WordPress Initialization Process के दौरान विभिन्न Stages को Represent करते हैं और कोई भी HTML Code, User के Web Browser में Return होने से पहले ये WordPress Core Codes जगह&जगह इस बात को Identify करने की कोशिश करते हैं, User वास्तव में अपने Web Browser में क्या Render करवाना चाहता है।

WordPress Initialization Process के दौरान विभिन्न Hook Points Internally या Theme अथवा Plugin के माध्‍यम से Define किए गए होते हैं, जहां Hooked या Attach किए गए विभिन्न Callback Functions Execute होते हैं। विभिन्न Pluginsfunctions.php File में Specified सभी Callback Functions, विभिन्न Hooks के लिए उनकी Priority के आधार पर क्रम से एक Queue में Store होते हैं।

फिर WordPress Initialization Process के दौरान WordPress Control क्रम से हर Hook Point ( do_action() Function ) पर पहुंचता है और हर Hook Point पर Specified Hook को Fire करता है। परिणामस्वरूप किसी Particular Hook के साथ Attached सभी Callback Functions क्रम से Execute होने लगते हैं और यही प्रक्रिया सभी Hooks के साथ Attached Callback Queue के साथ Perform होती है।

यानी WordPress के सभी Fire होने वाले Hooks के साथ Attached Functions क्रम से Execute होते हैं। जो Hook पहले Fire होता है, उससे Attached Callback Queue पहले Execute होता है जबकि बाद में Fire होने वाले Hooks के साथ Attached Callback Queue बाद में Execute होता है।

चौथे व अन्तिम Argument के रूप में हम हमारे Callback Function में Pass किए जाने वाले विभिन्न Parameters को Specify कर सकते हैं। हालांकि ज्यादातर परिस्थितियों में हमें इस Argument को Specify करने की जरूरत नहीं पडती। फिर भी कुछ Hooks ऐसे होते हैं, जिन्हें एक से ज्यादा Parameters की जरूरत होती है और उस स्थिति में हमें हमारे Callback Function में Extra Data को इस चौथे Parameter की तरह Pass करना जरूरी होता है।

हम किसी भी Action Hook के साथ एक से ज्यादा Actions यानी Callback Functions को Execute होने के लिए Hooked कर सकते हैं और जब किसी एक ही Hook के साथ एक से ज्यादा Actions (Callback Functions) Hooked होते हैं, तब वे सभी Callback Functions अपनी Priority के आधार पर पहले या बाद में Execute होते हैं अथवा यदि सभी की Priority समान हो, तो जो WordPress Engine जिस Action पर पहले पहुंचता है, वह Callback Function पहले Execute होता है।

यदि हम किसी Action को किसी Hook के साथ Hooked करना चाहें, उदाहरण के लिए मानलो कि हम हमारे Webpage के अन्त में Closing <body> Element से Just पहले एक Message Display करना चाहते हैं, तो हम WordPress के wp_footer Hook को Use कर सकते हैं।

wp_footer Hook Exactly तब Fire होता है, जब WordPress Engine Requested Webpage के Closing </body> Element से Just पिछली Line को Parse कर चुका होता है। इसलिए इस Hook को Use करते हुए हम हमारी Requirement को पूरा करने के लिए यानी Webpage के Closing </body> Element से Just पहले Message Insert करने के लिए add_action() Function को निम्नानुसार Use कर सकते हैं:

//File Name: wp-content/themes/bccfalna/functions.php
<?php 
function callback_function(){ 
 echo "<h1>This is from the wp_footer Hook</h1>"; 
}

add_action('wp_footer', 'callback_function');

यदि हम इस Code का Effect देखना चाहें, तो हमें केवल अपने Custom Theme में functions.php नाम की एक File Create करके उपरोक्त Code को उस File में लिखना है और अपनी index.php File में निम्नानुसार do_action() Function Call द्वारा “wp_footer” Hook को Fire करना है:

//File Name: wp-content/themes/bccfalna/index.php

<!DOCTYPE html> 
<html> 
 <head> 
  <title>BccFalna.com: TechTalks in Hindi</title> 
 </head> 
 <body> 
  <?php do_action('wp_footer'); ?> 
 </body>
</html>

अब जैसे ही हम इस WordPress Powered Site के Home Page को Web Browser में http://localhost/wp/ URL द्वारा Load करते हैं, हमें निम्नानुसार Output प्राप्त होता है:

WordPress Hooks Anatomy - WP Plugin and Theme Development

हम देख सकते हैं कि हमें Output में वही Message प्राप्त हो रहा है, जो हमने हमारे Callback Function में लिखा था और चूंकि Current Page पर कोई भी Content नहीं है, इसलिए हमें हमारे Callback Function में Specified Content ही दिखाई दे रहा है। लेकिन यदि Current Webpage पर कोई और Content होता, तो ये Message सारे Content के अन्त में दिखाई देता।

apply_filters() – Gateway to Fire Filter Hooks

जिस तरह से Action Hooks को Fire करने के लिए do_action() API Function का प्रयोग किया जाता है, उसी तरह से Filter Hooks को Fire करने के लिए WordPress हमें apply_filters() नाम का API Function Provide करता है।

जैसाकि हमने पहले भी बताया कि Action Hooks, WordPress में किसी Action या Event को Represent करते हैं जबकि Filter Hooks हमें Database से Retrieve या Database में Write होने वाले Data को Access करके Modify करने की सुविधा देते हैं।

यानी Filter Hooks का प्रयोग करके हम हमारे Data को Render होने से पहले या Database में Save होने से पहले अपनी जरूरत के अनुसार Filter कर सकते हैं। apply_filters() Function का Syntax भी do_action() Function की तरह ही होता है:

apply_filters( $tag, $arg = ‘ ‘ );

इस Function के पहले Argument के रूप में हमें किसी Filter Hook का नाम Specify करना होता है, जिसके साथ हम किसी Custom Function को Attach करके Execute करना चाहते हैं। जबकि दूसरे Argument के रूप में हम Registered Filter को Pass करते हैं। दूसरे Argument के रूप में हम एक से ज्यादा Filters को भी Pass कर सकते हैं। जैसे:

apply_filters( $tag, $arg, $arg1, $arg2, $arg3  );

जबकि यदि हम चाहें तो इस Function को बिना दूसरा Argument Specify किए हुए भी Call कर सकते हैं।

add_filter() – Filter : The Callback Function

Filter एक ऐसा Callback Function होता है जिसे किसी Filter Hook के साथ Register किया गया होता है।

हर Callback Function Parameter के रूप में कम से कम एक Argument Accept करता है और Return Value के रूप में उसी Argument को Modify करके Return करता है। बिना Filter Callback Function Register किए हुए, कोई भी Filter Hook कोई Special काम नहीं कर सकता।

जब हम apply_filters() API Function द्वारा किसी Filter Hook को Fire करते हैं, उस Fire होने वाले Hook के साथ जो भी Callback Function Registered होता है, वह Execute हो जाता है।

किसी Filter Callback Function को किसी Filter Hook के साथ Hooked करने के लिए हम add_filter() Function को ठीक उसी तरह से Use करते हैं, जिस तरह से किसी Action Hook के साथ किसी Action Callback Function को Hooked करने के लिए add_action() Function का प्रयोग किया था। साथ ही इस API Function का Syntax भी निम्नानुसार Exactly add_action() API Function के समान ही होता है:

add_filter(‘hook_name’, ‘callback_function’, priority, ‘callback_function_arguments);

हम देख सकते हैं कि add_filter() Function का Syntax भी Exactly add_action() Function के समान ही है। इसलिए ये दोनों ही Functions एक समान काम करते हैं यानी किसी Callback Function को किसी Hook के Response में Execute करते हैं।

WordPress in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Advance WordPress in Hindi | Page: 835 | Format: PDF

BUY NOW GET DEMO REVIEWS