सशर्त if ( isset($wp_filter['all']) ) {
आप इन हुक बनाने के कार्यों में सही पा सकते हैं:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
इनके बीच अंतर भेजे गए तर्कों की संख्या में है। या तो हमें कई तर्कों की जरूरत है, इस प्रकार ref_array
या एक ही तर्क। अन्य अंतर "एक्शन बनाम फिल्टर" सरल है, एक्शन किसी भी फ़ंक्शन / एक्शन को कर सकता है, और फ़िल्टर का नाम आमतौर पर उन फ़ंक्शन के लिए आरक्षित होता है जो स्ट्रिंग डेटा लेते हैं और उस डेटा को फ़िल्टर करते हैं।
ठीक है, ये हैं कि आप हुक कैसे बनाते हैं। और हुक में नाम होते हैं, और आप एक ही हुक नाम पर कई फ़ंक्शन नामों को पढ़ सकते हैं (पढ़ें: टैग)।
लेकिन एक बार जब आप विशिष्ट हुक से जुड़े सभी कार्यों को परिभाषित करते हैं, तो आपको कहीं न कहीं सभी हुक नामों और संबंधित फ़ंक्शन नामों को संग्रहीत करने की आवश्यकता होती है। यही कारण है कि हम global $wp_filter
वर्डप्रेस में ave करते हैं । यदि आप उस वेरिएबल को आउटपुट करते हैं तो आपको कुछ ऐसा मिलेगा ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
ठीक है, हम इस चर के नाम पर बहस नहीं करते हैं। व्यक्तिगत रूप से, मैं इसे भिन्न, संभावित कहूंगा $wp_hooks
क्योंकि यह नाम नहीं लिया गया है। हालांकि, अगर हम इतिहास हम मिलेगा में वापस पाने do_action
के बाद से है @since 1.2.0
और apply_filters
है @since 0.71
(9 जून, 2003 को जारी)। यह आपको बहुत अच्छी व्याख्या देता है कि इसे क्यों कहा जाता है $wp_filter
। यह सबसे अधिक संभावना है क्योंकि फ़िल्टर पहले वर्डप्रेस में पेश किए गए थे। बाद में उन्होंने कार्रवाई शुरू की।
@TheDeadMedic की ओर से कहा जा रहा है ...
add_action ('सभी', 'जो भी हो') हुक के नाम की परवाह किए बिना, हर do_action के लिए जो भी आग का मतलब होगा।
मैंने सवाल उठाया कि हमें आवश्यकता क्यों है $wp_filter['all']
? बस कुछ उदाहरण हैं। भविष्य के वर्डप्रेस संस्करणों में सिस्टम आंतरिक सुविधाओं का आत्मनिरीक्षण, परीक्षण और संभावित अधिक।