WordPress में वास्तव में apply_filters (…) क्या करता है?


123

मैं वर्डप्रेस के कुछ फंक्शन को समझने की कोशिश कर रहा हूं, लेकिन वास्तव में जो भी apply_filters (...) होता है, उसके आसपास मैं अपना सिर नहीं जमा सकता ।

क्या कोई मेरे लिए कुछ उदाहरणों के साथ यह स्पष्ट कर सकता है?



एक नोट जो apply_filters()फ़ंक्शन के लिए एक अविश्वसनीय रूप से भ्रामक नाम है क्योंकि यह दोनों फिल्टर और कार्यों को लक्षित फ़ंक्शन पर लागू करता है
कैमरोनजोसेवेब

@NabilKadimi, महान सुझाव, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , लेकिन इस समारोह किसी भी तर्क को स्वीकार नहीं करता जब (लिंक पर क्लिक करें जो कार्य करते हैं मैं बात कर रहा हूँ देखने के लिए), कैसे $ उत्पादन चर बदल है , जैसा कि वह अपने अगले कोड सेक्शन में बताता है?
रमेश पारीक

@RameshPareek आप वह लिंक हैं जो अपेक्षित रूप से काम नहीं कर रहा है, कृपया एक Github gist का उपयोग करें।
नबील कादिमी

माफ़ करना! कृपया नीचे स्क्रॉल करें उदाहरण 1: उस पृष्ठ पर मूल बातें
रमेश पारीक

जवाबों:


104

apply_filters($tag, $value)add_filterनिर्दिष्ट 'फ़िल्टर' टैग में 'फंक्स्ड' (उपयोग करते हुए ) में से प्रत्येक के लिए 'वैल्यू' तर्क पास करता है । प्रत्येक फ़ंक्शन मान पर कुछ प्रसंस्करण करता है और अनुक्रम में अगले फ़ंक्शन को पारित करने के लिए संशोधित मूल्य देता है।

उदाहरण के लिए, डिफ़ॉल्ट रूप से (वर्डप्रेस 2.9 में) the_contentफिल्टर कार्यों के निम्नलिखित अनुक्रम के माध्यम से मान गुजरता है:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

यह भी याद रखें कि ऐसी किसी भी चीज़ की प्रतिध्वनि करें जिसे आप उपयोग नहीं कर रहे हैं यदि ऐसा लगता है कि यह apply_filters($value)एक मूल्य मिटा रहा है ...
MrMesees

32

देर से जवाब

संक्षिप्त व्याख्या

apply_filters()global $wp_filtersसरणी के साथ सहभागिता करता है । मूल रूप से यह केवल सरणी की जांच करता है यदि वर्तमान फ़िल्टर (या हुक) में एक क्रिया (/ कॉलबैक फ़ंक्शन) संलग्न है और फिर इसे कॉल करता है।

लंबी व्याख्या

जब आप किसी कॉलबैक / एक्शन को फ़िल्टर या हुक से जोड़ते हैं, तो आप कॉलबैक नाम को वैश्विक फ़िल्टर सरणी में जोड़ते हैं। तब, कोड में (उदाहरण के लिए टेम्पलेट, कोर या प्लगइन फ़ाइल) कॉल do_action()या apply_filters()होने के लिए, तब वर्डप्रेस ने सरणी के माध्यम से खोज की और कॉलबैक को कॉल किया। केवल हुक के साथ फिल्टर के साथ और अधिक खास बात यह है कि यह कॉलबैक को फायर करने के बजाय मूल्य (आगे की हैंडलिंग के लिए) लौटाता है। इसलिए सारांशित: हुक डेटा सम्मिलित करने के लिए हैं , जबकि फ़िल्टर डेटा को संशोधित करने के लिए हैं।


19

सबसे लोकप्रिय उत्तर और अतिरिक्त संसाधनों पर विचार करने के बाद, मैं यह देख रहा हूं:

  • $ टैग हुक के नाम का एक पर्याय लगता है। (यह मेरे लिए विशेष रूप से सहज नहीं है।)
  • The_content "फ़िल्टर" प्रकार का एक हुक का एक उदाहरण है।
  • The_content हुक में कई फिल्टर होते हैं।
  • फिल्टर डेटा को संशोधित करते हैं। वे मूल रूप से डेटाबेस को फ़िल्टर करते हैं, उपयोगकर्ताओं को इसे देखने से पहले डेटा को बदलते हैं।
  • उदाहरण के लिए, apply_filters () का एक सामान्य उपयोग, $ सामग्री में the_content फ़िल्टर लागू करना है। इस उदाहरण में, डबल रिटर्न <p>टैग में बदल जाएगा , स्माइली चेहरे आइकनों में बदल जाएगा, आदि।
  • "The_content" एक हुक है, जबकि "the_content ()" एक फ़ंक्शन है।

1

सबसे बुनियादी शब्दों में, apply_filters का उपयोग एक फिल्टर हुक को इनिशियलाइज़ करने के लिए किया जाता है ... add_filter हुक के लिए एक नया फ़ंक्शन प्रदान करता है जो पहले ही बनाया जा चुका है।


3
क्षमा करें, यह गलत तरीका है: apply_filters () फ़िल्टर हुक को कॉल करता है जो पहले से प्रारंभ हो चुके हैं और add_filter () कॉल हुक है जो फ़िल्टर हुक बनाता है। मुझे पता है कि आप वास्तव में इसका मतलब है, लेकिन आप गलत तरीके से काम कर रहे हैं!
ब्रायन सी

apply_filters ($ टैग, $ मूल्य); आपको अपने कोड में एक जगह बनाने की अनुमति देता है, जहां आप add_filter () का उपयोग करके संशोधित किए गए $ मूल्य को पास कर सकते हैं और संशोधित कर सकते हैं;
स्टाइलडेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.