स्क्रिप्ट और शैलियों को पंजीकृत / संलग्न करने के लिए सही जगह कहां है


43

मैं अब तक वर्डप्रेस 3.1.4 का उपयोग कर रहा हूं। मैं उलझन में हूँ कि मैं कहाँ (कौन सा हुक) उपयोग करूँ:

  • रजिस्टर और / या enqueue करने के लिए
  • स्क्रिप्ट और शैली
  • आगे और पीछे के छोरों पर?

प्रशन:

  • कौन से सही हुक का उपयोग करना है?
  • सभी फ्रंट एंड रजिस्टर / एन्क्यू स्क्रिप्ट्स / स्टाइल इन init?
  • क्यों नहीं है admin_print_styles-{xxx}?

जवाबों:


62

क्यों ठीक से पंजीकरण और कतार लगाना मायने रखता है

  • यह समय में होना चाहिए - स्क्रिप्ट से पहले / शैली पृष्ठ पर आउटपुट होने के लिए है, अन्यथा यह बहुत देर हो चुकी है;

  • यह सशर्त होना चाहिए - अन्यथा आप सामान लोड कर रहे हैं जहां आपको इसकी आवश्यकता नहीं है और प्रदर्शन और कार्यक्षमता के मुद्दों का कारण बनता है, इसके लिए आपको WP वातावरण को देर से चरण में लोड करने की आवश्यकता है।

प्रक्रिया के तीन चरण

  1. रजिस्टर - यह स्क्रिप्ट / शैली के बारे में WP विवरण बताता है और यह उस जानकारी को संग्रहीत करता है;

  2. enqueue - (अक्सर एक wp_enqueue_*()कॉल में रजिस्टर के साथ एक साथ lumped ) - यह WP को इसकी सेटिंग्स (निर्भरता, शीर्षलेख / पाद लेख लोडिंग) के अनुसार लिपियों / शैली को कतार में जोड़ने के लिए कहता है।

  3. प्रिंट - यह तब होता है जब WP प्रक्रिया करता है, अपने लिए कुछ विशिष्ट लोड करने की कोशिश करता है या जब आप स्पष्ट रूप से wp_print_*()फ़ंक्शन के साथ करते हैं।

कार्यों और हुक के सामने के अंत संरचना

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts " यह वही चीज़ है जिसकी आपको आवश्यकता है

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

यह बहुत गहरा है, लेकिन यह महत्वपूर्ण बिंदुओं के लिए सरल और अच्छा है:

  • wp_enqueue_scriptsसामने वाले छोर पर स्क्रिप्ट और शैलियों को पंजीकृत करने और कतारबद्ध करने के लिए सबसे उपयुक्त हुक है और यह विशेष रूप से इसके लिए है;

  • initइससे कोई लेना-देना नहीं है, यह काम करेगा, लेकिन - पिछले कोडेक्स सिफारिश का उपयोग करने के लिए केवल यह गलत था ;

  • आप wp_print_footer_scripts()कॉल से पहले किसी भी बिंदु पर पाद लेख के लिए कतारबद्ध स्क्रिप्ट (शैलियों नहीं) के साथ दूर हो सकते हैं ;

  • wp_print_*हुक रजिस्टर / कतार के लिए उपयुक्त नहीं हैं , वे कोड में बिंदु हैं जब आउटपुट पहले से ही हो रहा है। वे मैनुअल / कस्टम स्क्रिप्ट / स्टाइल आउटपुट के लिए उपयुक्त हैं।

व्यवस्थापक के बारे में क्या?

खैर, कार्यक्षमता वहाँ और भी जटिल, विस्तृत और नेस्टेड है।

  • शुरुआत के लिए बस admin_enqueue_scriptsहुक का उपयोग करें (यह $hook_suffixसशर्त सामान के लिए वैश्विक हो जाता है ) सब कुछ के लिए, यह ज्यादातर मामलों के लिए अच्छी तरह से करेगा;

  • जब आपको कुछ जटिल की आवश्यकता होती है - admin-header.phpउचित हुक के लिए वहां से गुजरें और खोदें।

लॉगिन के बारे में क्या?

नाम का एक विशिष्ट हुक है login_enqueue_scripts


एक और सवाल के जवाब में हम्म , मुझे सिफारिश की गई थी admin_print_scripts-{xxx}। मैंने पाया कि admin_print_scriptsबुलाया गया था, लेकिन -{xxx}उदाहरण के लिए नहीं । -edit.phpउदाहरण के लिए। यह सही है कि admin_print_scripts-xxxआप इसमें क्या सलाह देंगे और आप इसके बजाय क्या सिफारिश करेंगे - मान लीजिए कि मैं स्क्रिप्ट / शैलियों को कस्टम पोस्ट टाइप एड / एडिट पेज (मेटाबेस के लिए) में शामिल करना चाहता हूं
JM at Work

5
@ जेएम एट वर्क एट माई पर्सनल ओपिनियन के ऊपर - *print*हुक से दूर रहें जब तक आप वास्तव में नहीं जानते कि आपको उनकी आवश्यकता क्यों है। और कुल मिलाकर वे प्रिंट के लिए हैं , कतार के नहीं । admin_enqueue_scriptsहुक $hook_suffixवैरिएबल को पार करता है जो उन गतिशील हुक में उपयोग किया जाता है।
रारस्ट

$hook_suffixमेरे एडिट पोर्टफोलियो पेज में पोस्ट की तरह दिखता है। ऐसा क्यों है? मैंने सोचा था कि इसे संपादित किया गया था। एफपी भी, मैं तब कैसे निर्धारित करूं कि मैं एक पोर्टफोलियो पोस्ट कर रहा हूं या एक सामान्य पोस्ट नहीं?
वर्क

@ जेएम ईमानदारी से काम करता है कि चर कुछ बुरा है :) खुद के प्लगइन में इसके साथ काम करना आसान है ( add_*_page()फ़ंक्शन की वापसी ), लेकिन मूल WP स्क्रीन में यह अलग-अलग चीजें हो सकती हैं।
रारस्ट जूल 8'11

दुर्भाग्य से जब मैं हुक को wp_footer से wp_enqueue_scripts या admin_print_scripts CSS असंतुष्टों में बदलता है और स्रोत कोड में कहीं भी दिखाई नहीं देता है। यह वह कोड है जिसका मैं उपयोग करता हूं: add_action ('wp_enqueue_scripts', 'addCSS'); यह काम नहीं करता है, यह काम करता है add_action ('wp_enqueue_scripts', 'addCSS); सिवाय इसके कि स्पष्ट रूप से पाद लेख के लिए सीएसएस जोड़ता है। मैं क्या गलत कर रहा हूं?
Talon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.