मुझे wp_register_script () का उपयोग wp_enqueue_script () बनाम wp_enqueue_script () के साथ कब करना चाहिए?


54

जब आपको उपयोग करने की आवश्यकता हो तो मुझे समझने में परेशानी हो रही है wp_register_script()। वर्तमान में, मैं सिर्फ कुछ का उपयोग करता हूं:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

मैंने बहुत से रीडिंग (कोडेक्स, ब्लॉग्स इत्यादि) किए हैं, लेकिन काफी समझ में नहीं आ रहा है कि मुझे पहले कब रजिस्टर करना चाहिए, या जब मुझे सिर्फ इनवेस्ट करना चाहिए। एक उदाहरण के रूप में, मैंने देखा कि ट्वेंटीवेट किसी भी शैली या स्क्रिप्ट को पंजीकृत नहीं करता है, यह सिर्फ उन्हें बताता है।

जवाबों:


49

wp_register_script()कोडेक्स पेज सचमुच का कहना है:

बाद में उपयोग के लिए वर्डप्रेस में javascripts दर्ज करने का एक सुरक्षित तरीका wp_enqueue_script()

इसका मतलब है, यदि आप अपनी स्क्रिप्ट को पंजीकृत करना चाहते हैं, लेकिन सीधे उन्हें अपने पृष्ठों में लोड नहीं करते हैं, तो आप फ़ाइलों को एक बार पंजीकृत कर सकते हैं, और फिर उन्हें ज़रूरत पड़ने पर लोड कर सकते हैं।

उदाहरण के लिए:

आपके पास एक स्विच स्टेटमेंट है जो कुछ कार्यक्षमता को लोड करता है, लेकिन तीन में से दो मामलों में एक विशेष जावास्क्रिप्ट फ़ाइल की आवश्यकता होती है, और एक नहीं। आप स्क्रिप्ट को हर बार संलग्न कर सकते हैं, जिसमें अधिक संसाधनों की लागत होती है, या आवश्यकता पड़ने पर केवल स्क्रिप्ट की गणना करें:

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

किसी स्क्रिप्ट को पंजीकृत करना और फिर उन्हें एनक्यू करना आवश्यक नहीं है, लेकिन यह आपके कोड में कुछ तर्क प्रदान कर सकता है यदि आप functions.phpअपने कोड में हर जगह के बजाय अपनी ज़रूरत की सभी स्क्रिप्ट रजिस्टर करते हैं।

कोडेक्स निम्नलिखित भी बताता है:

wp_enqueue_scriptsइस फ़ंक्शन admin_enqueue_scriptsको कॉल करने के लिए , या व्यवस्थापक पक्ष पर कॉल करने के लिए कार्रवाई का उपयोग करें ।

इसका मतलब यह है कि यदि आप अपनी स्क्रिप्ट को फ्रॉन्ड-एंड पर और बैक-एंड में एनकर करना चाहते हैं , तो आप एक बार एक स्क्रिप्ट रजिस्टर कर सकते हैं, और फिर इसे फ्रंट-एंड पर wp_enqueue_scriptऔर बैक-एंड में लोड कर सकते हैं admin_enqueue_script
इस तरह आप एक ही विषय, प्लगइन, विजेट या जो कुछ भी एक ही बार में एक ही enqueue संभोग नहीं होगा।


धन्यवाद। इससे वह काफी हद तक साफ हो गया। तो, क्या आपको लगता है कि ट्वेंटीवेट पहले पंजीकरण के लिए परेशान नहीं करता है क्योंकि यह उन्हें सुनिश्चित करने के लिए लोड करने जा रहा है?
akTed

यह एक संभावना हो सकती है। मुझे नहीं पता कि ट्वेंटी बारह विषय का निर्माण कैसे किया जाता है क्योंकि मैं इसका उपयोग कभी नहीं करता, लेकिन उन्हें यकीन है कि इसके कारण उनके enqueueअनुरूप होंगे register
माइक मैडर्न

2
इस अर्थ में, मैं "आप हर बार स्क्रिप्ट को संलग्न कर सकते हैं, जिससे अधिक संसाधन खर्च होते हैं, या जब आपको इसकी आवश्यकता होती है तो स्क्रिप्ट को केवल एनक्यू कर सकते हैं"। आपके उदाहरण कोड में, आप रजिस्टर कॉल को हटा सकते हैं और इसके बजाय कई समतुल्य पूर्ण-पूर्ण ($ src arg के साथ) कॉल करते हैं wp_enqueue_style()। यह सिर्फ अधिक टाइपिंग प्रयास होगा, लेकिन संसाधन की बड़ी आवश्यकताओं के परिणामस्वरूप नहीं । सही बात?
Jan-Philip Gehrcke

7
एक बिंदु जिसे अब तक सभी स्पष्टीकरणों से छोड़ दिया गया है, वह यह है कि आप wp_register_script()केवल एक स्क्रिप्ट को पंजीकृत करने के लिए उपयोग कर सकते हैं ताकि इसे अन्य लिपियों के लिए एक निर्भरता के रूप में इस्तेमाल किया जा सके और केवल उनके साथ लोड किया जा सके, बिना कभी सीधे संलग्न किए बिना।
जोफमैन 16

1
हालांकि यह इसे अच्छी तरह से समझाता है, मैं इस उत्तर को भी पढ़ने की सलाह दूंगा
लोटेकसून

8

IMHO से wp_register_scriptपहले उपयोग करने का मुख्य लाभ कोडेक्सwp_enqueue_scripts से निम्नलिखित पैराग्राफ में दर्शाया गया है :

वे स्क्रिप्ट जो पूर्व में wp_register_script () का उपयोग करके पंजीकृत की गई हो, उन्हें wp_enqueue_script () का उपयोग करके मैन्युअल रूप से एन्केच करने की आवश्यकता नहीं होती है, यदि वे एक और लिपि की निर्भरता के रूप में सूचीबद्ध होती हैं, जो कि एंकाउटेड है। वर्डप्रेस स्वचालित रूप से पंजीकृत स्क्रिप्ट को शामिल करेगा, इससे पहले कि इसमें एनक्रिप्टेड स्क्रिप्ट शामिल है जो एक निर्भरता के रूप में पंजीकृत स्क्रिप्ट के हैंडल को सूचीबद्ध करता है।

यदि आपको लगता है कि आपको इसकी आवश्यकता नहीं है (जैसे कि क्योंकि आप 100% सुनिश्चित हैं कि आपकी स्क्रिप्ट किसी भी निर्भरता में शामिल नहीं होगी) तो आप शायद wp_enqueue_scriptsबिना किसी प्रारंभिक के सीधे साथ जा सकते हैं wp_register_script


2

मैं कुछ लेखों को पढ़कर निम्नलिखित निष्कर्ष पर आया हूं। मुझे लगता है कि इससे मदद मिलती है।

  1. किसी भी स्क्रिप्ट का उपयोग करके पंजीकरण wp_register_script()करना केवल पंजीकरण करना है; इसे लोड नहीं कर रहा है। पंजीकृत स्क्रिप्ट को तब तक लोड नहीं किया जाएगा, जब तक कि इसका उपयोग करके गणना नहीं की जाती wp_enqueue_script()
  2. हमें प्रत्येक स्क्रिप्ट को एक साथ रजिस्टर और एनक्यू करने की आवश्यकता नहीं है। हमें सिर्फ एनकाउंटर करना चाहिए। पंजीकरण अनिवार्य नहीं है क्योंकि wp_enqueue_script()फ़ंक्शन स्वचालित रूप से स्क्रिप्ट को पंजीकृत करता है।
  3. लेकिन हमें निम्न स्थितियों में से किसी एक में पंजीकरण करने की आवश्यकता है:

    ए। मान लीजिए कि हमें एक स्क्रिप्ट को एक से अधिक स्थानों पर लोड करने की आवश्यकता है जैसे कि एक बार फ्रंट-एंड में और एक बार बैक-एंड (एडमिन पेज) में। अब हम स्क्रिप्ट को केवल एक बार रजिस्टर कर सकते हैं। और फिर इसे व्यक्तिगत रूप से फ्रंट-एंड और बैक-एंड में एनक्यू करें। देखिए, एनक्यूइंग का मतलब लोडिंग है। पंजीकरण का मतलब लोडिंग नहीं है। यदि हम इसे पंजीकृत नहीं करते हैं, तो यह स्वतः ही पंजीकृत हो जाएगा क्योंकि हम इसे कई बार दर्ज करते हैं। दूसरी ओर, यदि हम इसे एक बार पंजीकृत करते हैं, तो इसे एक बार पंजीकृत किया जाएगा, फिर चाहे हम इसे कितनी ही बार लागू करें।

    ख। यदि हम किसी स्क्रिप्ट का उपयोग अन्य स्क्रिप्ट की निर्भरता के रूप में करना चाहते हैं, तो हमें इसके साथ संलग्न करने की आवश्यकता नहीं है wp_enqueue_script()। बस इसे रजिस्टर करें wp_register_script()। और यह स्वचालित रूप से बाधक होगा जब हम इसका उपयोग करते हैं यह नाम संभाल के साथ अन्य लिपियों की निर्भरता के रूप में है wp_enqueue_script()

    सी। यदि हम चाहते हैं कि स्क्रिप्ट को एक बार में लोड किए जाने के बजाय आवश्यक होने पर लोड किया जाए, तो हम इसे बाद में उपयोग के लिए पंजीकृत कर सकते हैं। उपयोग मामला ऊपर दिखाया गया है।

NB जहाँ तक मेरा विश्वास है, सीएसएस स्टाइलशीट के लिए एक ही निष्कर्ष निकाला जा सकता है। मैं कहना है कि हम उपयोग कर सकते हैं मतलब wp_register_style()है और wp_enqueue_style()एक ही तरीके से।

ध्यान दें कि यहां निकाला गया निष्कर्ष मेरी अपनी कटौती को दर्शाता है। अगर मैं गलत हूं, तो कृपया मुझे सुधारें। और आप एक अलग और बेहतर निष्कर्ष पर पहुँच सकते हैं। अगर बात है, तो कृपया हमें बताएं। कौन जाने? शायद तुम्हारा सबसे अच्छा है। कहावत है, "मुक्ति के लिए कई तरीके के रूप में के रूप में कई सिद्धांतों,।" :)

https://sxbook.blogspot.com/2018/12/wpregisterscript-when-to-use.html


आपका स्पष्टीकरण मैंने पढ़ा सबसे अच्छा है। अब मैं समझता हूं कि लिपियों को पंजीकृत करना महत्वपूर्ण क्यों है। धन्यवाद!
जी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.