केवल चयनित पृष्ठों पर अपने CSS और JS लोड करने के लिए एक प्लगइन को प्रतिबंधित करना?


9

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

मेरे प्रश्न के लिए एक उदाहरण प्लगइन संपर्क फ़ॉर्म 7 है जिसका उपयोग मैंने अपनी साइट पर एक पृष्ठ में एक फॉर्म बनाने के लिए किया है (" मुझसे संपर्क करें " पृष्ठ)। हालाँकि यह वेबसाइट पर हर पृष्ठ / पोस्ट पर निम्नलिखित पंक्तियाँ जोड़ता है:

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

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

इस प्रकार, मेरा सवाल यह है कि मैं "कॉन्टैक्ट मी" पेज को छोड़कर सभी अतिरिक्त पेजों से इन अतिरिक्त लाइनों को कैसे हटा सकता हूं, लेकिन प्लगइन को निष्क्रिय किए बिना?

जवाबों:


9

शैलियों और लिपियों को हमेशा फ़ंक्शन द्वारा निर्धारित किया जाता है wp_enqueue_script()और wp_enqueue_style(), जिन्हें कार्य करने के लिए एक विशेष एक्शन हुक से बांधना पड़ता है। मैंने संपर्क फ़ॉर्म 7 के अंदर झांक लिया, और ऐसा लग रहा है कि यह एक्शन टैग का उपयोग कर रहा है wpcf7_enqueue_scriptsऔर wpcf7_enqueue_stylesउन्हें wp_print_scriptsऔर wp_print_stylesहुक में जोड़ना है ।

तो, क्या तुम क्या करने की जरूरत है हर पृष्ठ से स्क्रिप्ट और शैलियों अन-हुक लेकिन अपने संपर्क पृष्ठ। wp_headपहले स्क्रिप्ट और शैलियों कार्रवाई कार्रवाई आग, ताकि आप अपने विषय के functions.php फ़ाइल के लिए कुछ इस तरह जोड़ने की आवश्यकता होगी:

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

Is_page () समारोह वापस आ जाएगी trueजब आप संपर्क पृष्ठ पर कर रहे हैं (नाम यह सोचते हैं "संपर्क मुझे" है) ... आप भी पेज स्लग और फिल्टर के लिए पेज आईडी का उपयोग कर सकते हैं। अन्य सभी पृष्ठों पर, if()सशर्त स्क्रिप्ट / शैली हटाने के कार्य को wp_headक्रिया में जोड़ देगा , जो कि wp_print_scriptsऔर wp_print_stylesक्रियाओं के ठीक पहले फायर करता है ।

यह आपके पृष्ठों से अतिरिक्त कोड को हटा देना चाहिए, और आपको प्लग-इन को निष्क्रिय करने या किसी भी कोर फ़ाइलों को संपादित करने की आवश्यकता नहीं होगी। आपके द्वारा ऊपर सूचीबद्ध किए गए फ़ंक्शंस और कोड भी आपके विषय को नहीं तोड़ेंगे यदि आप भविष्य में संपर्क फ़ॉर्म 7 को हटाते हैं, तो या तो ... इसलिए भविष्य के उन्नयन की संगतता के बारे में चिंता करने की कोई आवश्यकता नहीं है।


नमस्ते इमान। महान समाधान - धन्यवाद! क्या आपको लगता है कि इस पद्धति को एक प्लगइन में ढाला जा सकता है जो यह जांचता है कि कौन से हुक का उपयोग किया जाता है, और फिर किसी को पृष्ठ स्थान के अनुसार निष्क्रिय करने की अनुमति देता है?
ताल गैली

दुर्भाग्य से, बहुत सारे हुक हैं जो वर्डप्रेस के भीतर गतिशील रूप से उपयोग किए जाते हैं। तो आप मज़बूती से यह पता नहीं लगा सकते कि कौन से हुक का उपयोग किया जा रहा है ... लेकिन आप शायद उनमें से अधिकांश को इस तरह से पकड़ सकते हैं।
एमान

ठंडा। आपने मुझे केवल एक नए प्रश्न के लिए एक विचार दिया: wordpress.stackexchange.com/questions/698/…
Tal Galili

बस इतना पता है, आपने मुझे इस प्लग-इन को विकसित करने का विचार भी दिया है :-)
EAMann

3
@ ईमॅन और @ टाल गैलीली - वास्तव में आप सभी हुक को पकड़ सकते हैं, यहाँ तक कि allहुक का उपयोग करने वाले डायनेमिक भी देख सकते हैं। wordpress.stackexchange.com/questions/307
MikeSchinkel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.