Do_action और add_action के बीच अंतर


20

यह प्रश्न गलत हो सकता है, मुझे इस पर यकीन नहीं है। क्योंकि मैं इस पर स्पष्ट नहीं हूं।

मुझे पता add_actionहै कि इसका उपयोग हमारे कार्य को निर्दिष्ट फ़ंक्शन को हुक करने के लिए किया जाता है। उदाहरण के लिए add_action('wp_head'.'myfunc');अब क्या कभी कोड में myfuncनिष्पादित किया जाएगा wp_head()। यह स्पष्ट है लेकिन मुझे संदेह है do_actionकि यह क्या करता है?

मुझे लगता है कि इसका उपयोग हमारे अपने हुक बनाने के लिए किया जाता है जैसे पहले से उपलब्ध हुक (wp_head, wp_footer, .. आदि) यदि मैं सही हूं तो क्या कोई मुझे सरल उदाहरण के साथ एक सरल समझने योग्य उत्तर दिखा सकता है।

मैंने इंटरनेट में अंतर की कोशिश की है, लेकिन सभी add_action और add_filter के बीच अंतर की ओर इशारा कर रहे हैं। मैं वहां नहीं जाना चाहता क्योंकि पहले मैं इसे स्पष्ट करना चाहता हूं और फिर मैं वहां जाऊंगा।

कोई भी मेरी मदद कर सकता हैं?

प्रश्न POST के बाद EDIT

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');

add_action('custom','custom_register');

मैं प्लगइन में यह कोशिश की, लेकिन मैं चेतावनी संदेश नहीं मिला।

लेकिन जब मैं उसी फ़ंक्शन को हुक करता हूं wp_headतब यह ठीक काम कर रहा है

/******************working****************/
add_action('wp_head','custom_register');

जब आप कॉलबैक पंजीकृत करने के do_action('custom'); बाद कॉल करते हैं तो क्या होता है ? और सुनिश्चित करें कि jQuery लोड है।
FUXIA

मुझे अलर्ट संदेश या तो बैक एंड या फ्रंट एंड पर नहीं मिला
सूर्य

jQuery लोड किए गए हैं। जब मैं के साथ एक ही समारोह हुक wp_headयह ठीक काम कर रहा है, लेकिन साथ नहीं हैcustom
सूरज

सूर्य, मेरा मानना ​​है कि आपके मूल प्रश्न का उत्तर टॉक्सो द्वारा दिया गया था और आपको इसे हल के रूप में चिह्नित करना चाहिए। आपके द्वारा किए गए # 3 # 4 के संपादन एक नए प्रश्न पर संबंधित हैं ।
ब्रसोफिलो

जवाबों:


13

do_action( 'unique_name' )अपने कार्यों को बनाने के लिए उपयोग करें ।

आप अपने प्लगइन के लिए एपीआई की पेशकश करने के लिए इसका उपयोग कर सकते हैं , इसलिए अन्य प्लगइन्स आपके कस्टम एक्शन के लिए कॉलबैक रजिस्टर कर सकते हैं। उदाहरण: क्या मुझे अपने प्लगइन में do_action पर कॉल करने की आवश्यकता है?

लेकिन आप एक विषय में भी कस्टम क्रियाओं (या फ़िल्टर) का उपयोग कर सकते हैं। उदाहरण: कस्टम थीम को वर्डप्रेस थीम में लागू करने का सबसे अच्छा तरीका

और आप एक प्लगइन और एक थीम पर एक साथ काम करने के लिए दोनों को जोड़ सकते हैं। उदाहरण: विषय में उपलब्ध प्लगइन से विधि कैसे बनाएं?

सारांश: add_action( 'foo' )एक कॉलबैक do_action( 'foo' )को पंजीकृत करता है , उस पंजीकृत कॉलबैक को निष्पादित करता है।


मुझे मिली सहायता के लिए धन्यवाद यह मुख्य रूप से एपीआई उद्देश्य के लिए है। मैंने एक नमूना लेने की कोशिश की लेकिन यह कारगर नहीं हुआ। क्या आपको कोई समस्या है? मेरे EDIT @toscho की जाँच करें
सूर्य

क्या हम इसे विरासत की तरह एक और मामला कह सकते हैं? जिस तरह से हम इस तरह से जा रहे हैं, उस वर्ग को विस्तार देने और ओवरराइड करने का इरादा है। क्या ये सही है?
सूर्य

@ सीन हं, हां, लेकिन आप दोनों दृष्टिकोणों को जोड़ सकते हैं , वे परस्पर अनन्य नहीं हैं।
FUXIA

1

यह मेरा अनुमान है, इसलिए यदि आप बेहतर जानते हैं, तो कृपया एक टिप्पणी करें ताकि मैं अपने अनुमान को अपडेट कर सकूं।

आपका प्लगइन कोड पहले निष्पादित किया गया है wp_head()(जो हम मान सकते हैं कि इसमें जोड़े गए कार्यों को लागू करेगा)। जब आप add_action('wp_head','custom_register'), आप PHP को बता रहे हैं कि कब (भविष्य में) do_action('wp_head')कहा जाता है, custom_register()साथ ही कॉल करने के लिए । आपकी कॉल के लिए भी यही सही है, add_action('custom','custom_register')लेकिन जैसा कि आप अपने कोड में देखते हैं, कॉल do_action('custom')पहले ही की जा चुकी है, और जब इसे कॉल किया गया था, तो इसमें कोई एक्शन नहीं जोड़ा गया था। यही कारण है कि टोस्चो ने पूछा कि जब आप कॉलबैक पंजीकृत करने के do_action('custom') बाद कॉल करते हैं तो क्या होता है । बैक एंड और फ्रंट एंड के बारे में आपका जवाब अस्पष्ट है। यदि आप निम्नलिखित कोड में अंतिम दो लाइनें स्वैप करते हैं, तो मुझे लगता है कि यह काम करेगा:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');                    // This is called before it will have an effect.

add_action('custom','custom_register'); // Too late - do_action was already called.

0

do_action: रजिस्टरों एक कार्रवाई हुक , जबकि add_action: एक कॉलबैक फ़ंक्शन कहते हैं पंजीकृत हुक करने के लिए।

उदाहरण

विचार करें कि आप अपने टेम्पलेट में साइडबार से पहले कुछ प्रिंट करना चाहते हैं।

  1. आप अपनी टेम्पलेट फ़ाइल के माध्यम से एक एक्शन हुक जोड़ेंगे ।index.php<?php add_action('bp_sidebar_left'); ?>
  2. अब आपकी functions.phpफ़ाइल में आप उस हुक पर कॉलबैक फ़ंक्शन जोड़ सकते हैं, जो आप चाहते हैं।

add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }


-1

आपको नीचे की तरह उपयोग करना होगा:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
.

add_action('custom','custom_register'); // Too late - do_action was already called. 
do_action('custom');                    // This is called before it will have an effect

यह मेरे लिए काम कर रहा है
user112289
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.