WordPress
क्रिया और फ़िल्टर
खोज…
वाक्य - विन्यास
- add_action (टैग, function_to_call, प्राथमिकता, num_of_args);
- add_filter (टैग, function_to_call, प्राथमिकता, num_of_args);
पैरामीटर
पैरामीटर | व्याख्या |
---|---|
$ टैग | (स्ट्रिंग) (आवश्यक) कार्रवाई का नाम जिसके लिए $ फ़ंक्शन झुका हुआ है। |
$ समारोह | (callable) (आवश्यक) फ़ंक्शन नाम या अनाम फ़ंक्शन युक्त स्ट्रिंग की आवश्यकता है। कक्षाओं के भीतर कार्यों को जोड़ने के लिए उदाहरण देखें। |
$ प्राथमिकता | (int) डिफ़ॉल्ट = 10. हुक / फिल्टर से जुड़े कार्य सौंपे गए प्राथमिकता में चलेंगे। आपके पास ऐसी स्थिति हो सकती है जहां आप किसी भी अन्य कार्यों से पहले कोड के साथ काम करना चाहते हैं, प्राथमिकता निर्धारित करें = 1 या अन्य संलग्न कार्यों के बाद प्राथमिकता = 100 आदि। सभी php फ़ंक्शन के साथ, आप किसी चर के लिए मान पारित किए बिना फ़ंक्शन का उपयोग कर सकते हैं। जहां एक डिफ़ॉल्ट मान सेट किया गया है, लेकिन यदि आप दिए गए मापदंडों की संख्या को बदलना चाहते हैं, तो आपको निर्दिष्ट करना होगा! |
$ मानकों | (int) डिफ़ॉल्ट = 1. मापदंडों की संख्या आपके संलग्न फ़ंक्शन पर लौट आई। लौटाए गए पैरामीटर उस नंबर पर निर्भर करेंगे जहां संलग्न हुक था। अधिक विवरण के लिए apply_filters() और do_action() देखें। |
टिप्पणियों
वर्डप्रेस हुक
कुछ ऐसा जो अक्सर डेवलपर्स को भ्रमित करता है जब वर्डप्रेस के साथ काम करना शुरू होता है तो apply_filters()
और add_action()
। आप अक्सर कोड में प्लगइन्स / थीम का उपयोग करते हुए देखेंगे और यदि आप अवधारणा को नहीं समझते हैं, तो आपको उनके साथ काम करना मुश्किल होगा।
संक्षेप में (बहुत संक्षिप्त में, विस्तार से प्रक्रिया के लिए वर्डप्रेस लोड फ्लोचार्ट देखें), वर्डप्रेस निम्नलिखित तरीके से लोड करता है:
- wp-load.php - कार्य आदि
- म्यू-प्लगइन्स - म्यू-प्लग फ़ोल्डर में पाई जाने वाली कोई भी फाइल - अक्सर कैश्ड ऑब्जेक्ट्स की सेवा के लिए उपयोग की जाती है
- प्लगइन्स - कोई विशेष आदेश नहीं, किसी भी स्थापित और सक्रिय प्लगइन्स को लोड किया जाएगा
- सक्रिय बाल विषय / अभिभावक विषय
- init - बाकी डेटा
- टेम्पलेट
यदि आप एक डेवलपर हैं और फ़ंक्शंस फ़ाइल के साथ काम कर रहे हैं, तो आप देख सकते हैं कि दोनों इस प्रक्रिया में पहले से लोड की गई फ़ाइलों के साथ काम कर रहे हैं। मतलब आप प्रक्रियाओं को संशोधित नहीं कर सकते (ध्यान दें कि आप कार्यों को अधिलेखित नहीं कर सकते हैं) या चर जो बाद में चलते हैं या अभी तक परिभाषित नहीं किए गए हैं। थीम डिवेलपर्स प्लग इन को हुक करने की अनुमति देने के लिए अपने कोड में हुक लगा सकते हैं या प्लगइन्स अन्य प्लगइन्स को अपने चर को अधिलेखित करने की अनुमति दे सकते हैं। अब यह इस प्रकार से भ्रामक हो सकता है, लेकिन इसमें लटका रह सकता है।
add_filter()
और add_action()
को समझने के लिए हमें यह देखने की जरूरत है कि पहले स्थान पर हुक कैसे बनाए जाते हैं।
$arga= 'hello';
do_action('im_a_hook', $arga );
जब आप वर्डप्रेस में उपरोक्त मुठभेड़ करते हैं, तो यह हुक im_a_hook
से जुड़े किसी भी फ़ंक्शन को कॉल करेगा (प्रक्रिया पर जानकारी के लिए $wp_filter
देखें)। आपके अटैच्ड फंक्शन में $arga
जुड़े फंक्शन के लिए उपलब्ध होगा।
add_action('im_a_hook', 'attached_function');
function attached_function($arga){
echo $arga;
}
यह लोड प्रक्रिया के कुछ बिंदुओं पर चर को संशोधित करने के शक्तिशाली नए अवसर खोलता है। याद रखें कि हमने पहले कहा था कि प्लगइन्स / थीम के बाद टेम्प्लेट लोड किए जाते हैं? एक सामान्य प्लगइन WooCommerce है जो बाद में प्रक्रिया में स्क्रीन बनाता है, मैं दस्तावेज़ में नहीं जा रहा हूं लेकिन प्लगइन में do_action
का एक उदाहरण पाया जा सकता है।
do_action( 'woocommerce_after_add_to_cart_button' );
यहां हमारे पास एक हुक बनाया गया है जो बिना किसी चर के वापस जाता है, लेकिन हम अभी भी इसके साथ मज़े कर सकते हैं:
add_action( 'woocommerce_after_add_to_cart_button', 'special_offer');
function special_offer(){
echo '<h1>Special Offer!</h1>;
}
उपरोक्त add_action
विशेष ऑफ़र की एक हेडिंग को echo
करेगा जहां do_action('woocommerce_after_add_to_cart_button')
स्थित है जो WooCommerce स्क्रीन बनाते समय स्थित है। तो हम html को सम्मिलित करने के लिए इस हुक का उपयोग कर सकते हैं। अन्य उपयोगों में पूरी तरह से एक अलग स्क्रीन पर पुनः निर्देशित करना शामिल हो सकता है, आदि।
साथ ही कई वेरिएबल्स को फंक्शन में पास किया जा सकता है। अपने थीम फ़ंक्शन में इसे आज़माएं। अंतिम पैरामीटर पर ध्यान दें जो हम 3 पर सेट कर रहे हैं, क्योंकि हम 3 उपलब्ध मापदंडों के साथ काम करना चाहते हैं। यदि हमने इसे 2 में बदल दिया, तो केवल 2 वापस आएंगे और हमें एक अपरिभाषित त्रुटि मिलेगी।
add_action('custom_hook', 'attached_function', 10, 3);
function attached_function($a,$b,$c){
var_dump($a);
var_dump($b);
var_dump($c);
}
$arga = 1;
$argb = 2;
$argc = 3;
do_action('custom_hook', $arga, $argb, $argc);
exit;
एक और WP हुक प्रकार है जिसे फ़िल्टर कहा जाता है। एक फ़िल्टर इसके उपयोग में एक कार्रवाई से अलग है, एक कार्रवाई केवल चर प्राप्त कर सकती है, जाहिर है कि ये चर फ़ंक्शन के दायरे में हैं (आपको पता होना चाहिए कि php गुंजाइश क्या है, यदि Google नहीं है)। फ़िल्टर किए गए डेटा को वापस पास करते हैं, इसलिए आप चर को संशोधित करने के लिए उपयोग कर सकते हैं।
$filter_me= apply_filters('im_a_filter', $variable_to_filter);
जहाँ आप ऊपर देखते हैं, आप $filter_me
के मान को संशोधित कर सकते हैं क्योंकि आपके द्वारा लौटाया गया कोई भी डेटा वैरिएबल में संग्रहीत मूल्य होगा। तो उदाहरण के लिए (ध्यान दें कि हम $variable_to_filter
को $filter_me
को उदाहरण में बदल रहे हैं):
add_filter('im_a_filter', 'attached_function', 100);
function attached_function($filter_me){
$filter_me= 'ray';
return $filter_me;
}
$filter_me = 'bob';
$filter_me= apply_filters('im_a_filter', $filter_me);
$filter_me
वैरिएबल में अब 'बॉब ' के बजाय 'रे' होगा, हमने 100 की प्राथमिकता तय की है इसलिए हमें पूरा विश्वास है कि उपयोग के बाद कोई भी मूल्य नहीं बदल रहा है (एक ही हुक पर चलने वाले कई फ़िल्टर हो सकते हैं) तो हम यदि अब apply_filters()
मौजूद है, तो इस प्रक्रिया में बाद में उपयोग किए जाने वाले चर को बदल सकते हैं।
आप कई पैरामीटर भी पास कर सकते हैं, लेकिन आप केवल एक के मूल्य को बदल सकते हैं। आपको एक मान भी वापस करना होगा, अन्यथा आपके चर में कुछ भी नहीं होगा। यदि आप समझते हैं कि आप php का उपयोग मानों / सरणियों / वस्तुओं को प्रदान करने के लिए कैसे करते हैं तो यह आपके लिए स्पष्ट होगा, उदाहरण के लिए:
add_filter('im_a_filter', 'attached_function', 100, 3);
function attached_function($filter_me, $arga, $argb){
$filter_me= 'ray'.$arga.$argb;
$arga= 'you fool';
return $filter_me;
}
$filter_me = 'bob';
$arga = ' middlename';
$argb = ' surname';
$filter_me= apply_filters('im_a_filter', $filter_me, $arga, $argb);
$filter_me
फ़िल्टर_मे चर में अब 'रे मिडलेनमे सरनेम' है । लेकिन क्या $arga
बारे में? इसमें अभी भी 'मिडिल्लेनेम' शामिल है , हमारे फ़ंक्शन के भीतर 'आप मूर्ख' के लिए $arga
बदलने से इसके दायरे के बाहर परिभाषित मूल्य पर कोई प्रभाव नहीं पड़ता है (तरीके, Google ग्लोबल्स आदि हैं)
add_action ($ हुक_नाम, $ फ़ंक्शन, $ प्राथमिकता, $ पैरामीटर)
add_filter ($ हुक_नाम, $ फ़ंक्शन, $ प्राथमिकता, $ पैरामीटर);
add_action - init
add_action('init', 'process_post');
function process_post(){
if($_POST)
var_dump($_POST);
}
add_action - init - अनाम फ़ंक्शन
add_action('init' , function(){
echo 'i did something';
});
add_action - init - वर्ग वस्तु के भीतर
class sample{
public function __construct(){
add_action('init', array($this, 'samp') );
}
public function samp(){ // must be public!!
echo 'i did something';
}
}
new sample();
add_action - init - स्थिर वर्ग के भीतर
class sample{
public static function add_action_func(){
//note __CLASS__ will also include any namespacing
add_action('init', array(__CLASS__, 'samp') );
}
public static function samp(){
echo 'i did something';
}
}
sample::add_action_func();