निर्भरता के बिना wp_add_inline_script


11

मेरे पास एक जावास्क्रिप्ट स्निपेट है जिसे मैं पृष्ठ के पाद लेख में इंजेक्ट करना चाहता हूं। यह एक ट्रैकिंग कोड है, आइए Google विश्लेषिकी के समान कहें। इसकी कोई निर्भरता नहीं है, यह एक स्टैंडअलोन स्निपेट है।

मैं ऐसा कुछ कर सकता हूं

function render_tracking_code(){
    wp_enqueue_script( 'depends-js', 'https://rdiv.com/dummy.js', array(), '0.01', true );
    wp_add_inline_script( 'depends-js', 'aWholeBunchOfJavascriptCode' );
}
add_action( 'wp_enqueue_scripts', 'render_tracking_code' );

थोड़ा बेवकूफ लगता है (dummy.js एक रिक्त फ़ाइल है), लेकिन काम करता है। क्या निर्भरता को छोड़ने का एक तरीका है?

जवाबों:


13

wp_add_inline_style() - निर्भरता के बिना

wp_add_inline_style()एक स्रोत फ़ाइल निर्भरता के बिना इस्तेमाल किया जा सकता।

यहाँ @Flix से एक उदाहरण दिया गया है:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );
wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

जहां हम इसे wp_enqueue_scriptsकार्रवाई में शामिल करेंगे।

wp_add_inline_script() - निर्भरता के बिना

टिकट # 43565 के अनुसार , समान wp_add_inline_script()संस्करण के लिए समर्थित होगा (टिप्पणियों में सत्यापन के लिए @MarcioDuarte, @ dev101 और @DaveRomsey के लिए धन्यवाद):4.9.9 5.0

wp_register_script( 'dummy-handle-header', '' );
wp_enqueue_script( 'dummy-handle-header' );
wp_add_inline_script( 'dummy-handle-header', 'console.log( "header" );' );

जो हेडर में निम्नलिखित प्रदर्शित करेगा , अर्थात् <head>...</head>टैग को हटाएं :

<script type='text/javascript'>
console.log( "header" );
</script>

पाद लेख में इसे प्रदर्शित करने के लिए :

wp_register_script( 'dummy-handle-footer', '', [], '', true );
wp_enqueue_script( 'dummy-handle-footer'  );
wp_add_inline_script( 'dummy-handle-footer', 'console.log( "footer" );' );

के डिफ़ॉल्ट $positionमें इनपुट तर्क wp_add_inline_script()है 'after''before'मूल्य से ऊपर यह प्रिंट 'after'


wp_add_inline_script()बिना निर्भरता अभी भी 4.9.9 के लिए विचार किया जा रहा है, यह जरूरी नहीं है कि यह जोड़ दिया जाएगा। इसलिए इस सुविधा का उपयोग करने से पहले पुष्टि की प्रतीक्षा करना बुद्धिमानी है।
मार्सियो

1
हम WP 5.0 के रूप में जाने के लिए अच्छे हैं ।
डेव रोमसे

किसी ने मेरी टिप्पणी को यहां से हटा दिया (मैंने बीरगिरी के उत्तर की पुष्टि की कि यह वास्तव में WP 5.0+ में काम करता है), और एक महीने बाद मुझे वास्तव में इस कोड की फिर से आवश्यकता थी, गुगली हुई, यह जवाब मिला, एक नज़र में बह गया, मेरी टिप्पणी नहीं मिली, और स्थानांतरित हो गया। अन्य परिणामों के लिए। एक घंटे के बाद, मैं यहाँ वापस आया, मुझे एहसास हुआ कि यही वह उत्तर था जिसकी मुझे तलाश थी! मॉडरेटर के लिए: कृपया मेरी उपयोगी टिप्पणियों को न हटाएं, वे ME के ​​साथ-साथ भविष्य के संदर्भों और अनुस्मारक की सेवा करते हैं, न कि दूसरों के लिए। धन्यवाद।
dev101

दुर्भाग्य से मुझे संस्करण 4.9.x के साथ रहना होगा
लुकास वेंद्रामिनी 18

5

अद्यतन: वर्डप्रेस ने v5.0 में निर्भरता के बिना इनलाइन स्क्रिप्ट और शैलियों को जोड़ने के लिए समर्थन जोड़ा। कार्यान्वयन के लिए @ बरिगरे का उत्तर देखें ।

उपयोग करते समय wp_add_inline_script(), WP_Scripts::print_inline_script()अंततः इनलाइन स्क्रिप्ट को आउटपुट करने के लिए उपयोग किया जाएगा। डिजाइन के द्वारा, print_inline_script(), एक वैध निर्भरता की आवश्यकता है $handle

चूंकि इस मामले में कोई निर्भरता wp_add_inline_script()नहीं है, इसलिए नौकरी के लिए सही उपकरण नहीं है। एक नकली निर्भरता फ़ाइल (और अवांछनीय अतिरिक्त HTTP अनुरोध) बनाने के बजाय, इनलाइन स्क्रिप्ट का उपयोग wp_headया wp_footerआउटपुट करने के लिए:

add_action( 'wp_head', 'wpse_add_inline_script' );
function wpse_add_inline_script() {
  echo '<script>' . PHP_EOL;

  // aWholeBunchOfJavascriptCode

  echo '</script>' . PHP_EOL;
}

आम तौर पर, जावास्क्रिप्ट को एक .jsफ़ाइल में जोड़ा जाना चाहिए और हुक wp_enqueue_script()पर उपयोग करके संलग्न किया जाना चाहिए wp_enqueue_scripts। डेटा का उपयोग कर स्क्रिप्ट को उपलब्ध कराया जा सकता है wp_localize_script()। कभी-कभी यह अभी भी एक स्क्रिप्ट इनलाइन जोड़ने के लिए आवश्यक हो सकता है।


0

ऐसा करने का एक तरीका एक फ़ंक्शन बनाना है जो एक <script>टैग के अंदर आपकी स्क्रिप्ट को गूँजता है, और इसे wp_print_footer_scriptsकार्रवाई के लिए हुक करता है। आपको किसी भी चीज़ से बचने के लिए ध्यान रखना चाहिए जिसे आप सख्ती से नियंत्रित नहीं करते हैं, लेकिन यह आमतौर पर सुरक्षित और आसान तरीका है अन्यथा नहीं।

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

add_action( 'wp_print_footer_scripts', function () { 
    ?>
    <script>
        (function myFunction() { 
            /* your code here */
        })();
    </script>
<?php 
} );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.