वर्डप्रेस में फिल्टर और हुक वास्तव में कैसे काम करते हैं?
मैं कुछ उन्नत के बारे में पूछ रहा हूँ। इसे PHP में कैसे लागू किया जाता है? जैसे कि यह कैसे अलग-अलग प्लगइन्स से सभी हुक इकट्ठा करता है और उन्हें कोर हुक आदि से "संलग्न" करता है।
वर्डप्रेस में फिल्टर और हुक वास्तव में कैसे काम करते हैं?
मैं कुछ उन्नत के बारे में पूछ रहा हूँ। इसे PHP में कैसे लागू किया जाता है? जैसे कि यह कैसे अलग-अलग प्लगइन्स से सभी हुक इकट्ठा करता है और उन्हें कोर हुक आदि से "संलग्न" करता है।
जवाबों:
मूल रूप से " प्लगइन एपीआई ," जो फिल्टर और हुक को सम्मन करता है, में निम्नलिखित कार्य शामिल हैं:
apply_filters()
- निष्पादित करेंdo_action
- निष्पादित करेंapply_filters_ref_array()
- निष्पादित करेंdo_action_ref_array()
- निष्पादित करेंadd_filter()
- स्टैक में जोड़ेंadd_action()
- स्टैक में जोड़ेंकुल मिलाकर इसमें कुछ ग्लोबल्स (वर्डप्रेस वर्ल्ड में और क्या शामिल हैं) शामिल हैं:
global $wp_filter, $wp_actions, $wp_current_filter, $merged_filters;
पहला एक $wp_filter
वैश्विक है Array
जो सभी फ़िल्टर नामों को सबरेज़ के रूप में रखता है। उनमें से प्रत्येक उप-प्रहर तब और भी अधिक उप-धारियाँ रखता है जो एक प्राथमिकता सरणी के तहत बुलाए गए कॉलबैक हैं।
इसलिए जब एक निष्पादन कार्य कहा जाता है, तो वर्डप्रेस उन नाम के साथ उन ग्लोबल्स सरणियों को खोजता है। फिर संलग्न कॉलबैक को प्राथमिकता के बाद निष्पादित किया जाता है। केवल एक चीज जो सामने होती है वह all
फ़िल्टर से जुड़ी कॉलबैक होती है ।
जब आप कॉलबैक का उपयोग करते हैं add_action
या add_filter
, तब वर्डप्रेस पहले एक "यूनिक" आईडी की गणना करता है, जो पहले से अटैच कॉलबैक को अधिलेखित नहीं करता है।
$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
तब यह आपके कॉलबैक को global $wp_filter
स्टैक में जोड़ता है :
$wp_filter[ $tag ][ $priority ][ $idx ] = array(
'function' => $function_to_add,
'accepted_args' => $accepted_args
);
जैसा कि आप देख सकते हैं कि मुख्य उप सरणी $tag
(या एक्शन / फ़िल्टर नाम) है, तो सब कुछ एक विशिष्ट प्राथमिकता के तहत बुलाया जाता है, और फिर "अद्वितीय" कॉलबैक / आईडी स्ट्रिंग को कुंजी के रूप में उपयोग किया जाता है।
बाद में, जब एक फिल्टर को कॉल किया जाता है - $tag
/ कार्रवाई / / फिल्टर-नाम के साथ हो रहा है - सरणी की खोज की जाती है और कॉलबैक को कॉल किया जाता है। जैसा कि यह उपयोग कर call_user_func_array
रहा है यह वास्तव में मायने नहीं रखता है कि कितने तर्क संलग्न हैं। वर्डप्रेस खुद से हल करता है।
foreach ( (array) current( $wp_filter[ $tag ] ) as $the_ )
{
call_user_func_array(
$the_['function'],
array_slice(
$args,
0,
(int) $the_['accepted_args']
)
);
}
वर्डप्रेस कोर फ़ाइलों और कुछ मूल थीम फ़ाइलों में हुक शामिल हैं। वे आपको फ़ाइल में एक विशिष्ट स्थान में सामग्री को हुक करने में सक्षम करते हैं।
एक उदाहरण वर्डप्रेस में wp_head हुक है। आप उस स्थान में सामग्री जोड़ने के लिए अपने बच्चे के विषय में इस हुक का उपयोग कर सकते हैं '
उदाहरण:
add_action('wp_head', 'add_content_to_head');
function add_content_to_head() {
echo 'Your Content';
}
कुछ प्रीमियम थीम में एक्शन हुक भी शामिल होते हैं जिनका उपयोग आप चाइल्ड थीम में भी कर सकते हैं। यहां एक दृश्य मानचित्र है जिसमें सभी एक्शन हुक शामिल हैं और वह स्थिति जो वे आपकी सामग्री को जेनेसिस थीम फ्रेमवर्क में आउटपुट करते हैं।
उदाहरण:
add_action('genesis_header', 'add_content_to_header');
function add_content_to_header() {
echo 'Your Content';
}
यहाँ क्या दिखता है अगर आपने Genesis विषय ढांचे में हैडर.php फ़ाइल खोली है:
do_action( 'genesis_header' );
यहां वर्डप्रेस हुक की एक सूची दी गई है जिसका आप कई तरह से उपयोग कर सकते हैं।
फ़िल्टर आपको किसी मौजूदा फ़ंक्शन के आउटपुट को संशोधित करने में सक्षम करते हैं और इसमें वर्डप्रेस कोर फ़ाइलों और उत्पत्ति जैसे कुछ मूल थीम फ्रेमवर्क दोनों शामिल हैं।
यहां उन फ़िल्टर की सूची दी गई है जिनका उपयोग आप जेनेसिस डिज़ाइन फ्रेमवर्क के साथ कर सकते हैं
यहां वर्डप्रेस में शामिल फिल्टर की सूची दी गई है
यहां इस बात का उदाहरण दिया गया है कि आप उत्पत्ति जैसे थीम फ्रेमवर्क में फ़िल्टर का उपयोग कैसे कर सकते हैं:
add_filter( 'comment_author_says_text', 'custom_comment_author_says_text' );
function custom_comment_author_says_text() {
return 'author says';
}
उपरोक्त कोड का उपयोग एक बाल विषय में किया जा सकता है ताकि लेखक आपकी टिप्पणियों में पाठ को संशोधित कर सके। यह किसी भी विषय में काम करता है।
यहाँ एक और उदाहरण दिया गया है जो अंशों की लंबाई को 50 शब्दों में अनुकूलित करता है:
add_filter( 'excerpt_length', 'change_excerpt_length' );
function change_excerpt_length($length) {
return 50;
}
आपको wp में / post-template.php फ़ाइल में the_excerpt () फ़ंक्शन मिलेगा ।
यहाँ यह कैसा दिखता है:
function the_excerpt() {
echo apply_filters('the_excerpt', get_the_excerpt());
}
आप प्लगइन्स में हुक और फिल्टर का भी उपयोग कर सकते हैं ठीक उसी तरह से और जब आप मूल विषय या वर्डप्रेस को अपडेट करते हैं तो कोड खो नहीं जाएगा।
मूल रूप से, हुक और फ़िल्टर आपको कोर वर्डप्रेस फ़ाइलों या अपने मूल विषय फ़ाइलों को संपादित किए बिना वर्डप्रेस और अपने मूल विषय दोनों को अनुकूलित और संशोधित करने में सक्षम बनाते हैं।
पेरेंट थीम फ्रेमवर्क में हुक और फिल्टर्स शामिल होने पर चाइल्ड थीम को कस्टमाइज करना काफी आसान हो जाता है क्योंकि आपको कभी भी पेरेंट थीम टेम्पलेट फाइल को एडिट करने की आवश्यकता नहीं होती है। इस तरह आप सुरक्षित रूप से थीम भी बदल सकते हैं।