विशिष्ट पृष्ठ टेम्पलेट्स पर wp enqueue शैली


24

मैं एक विषय की प्रक्रिया में हूं, मैं पेज-टेम्प्लेट का उपयोग करके लैंडिंग पृष्ठ जोड़ना चाहूंगा। मुझे ऐसा कहीं भी नहीं मिला जो यह दर्शाता हो कि विशिष्ट पृष्ठ टेम्प्लेट के लिए शैली या js को कैसे अलग किया जाए। कोई सुझाव। पूर्व। लैंडिंग पेज 1 - लैंडिंग-पेज-टेम्प्लेट- one.php को ब्लॉग या होमपेज की तुलना में बहुत अलग शैली और js की आवश्यकता होगी।

जवाबों:


29

यदि आप बहुत सारे WP विकास करने की योजना बनाते हैं, तो आपको इस पृष्ठ को बुकमार्क करना चाहिए: http://codex.wordpress.org/Conditional_Tags

अन्य उत्तर काम करता है लेकिन सशर्त आपके पृष्ठ स्लग (myurl.com/this-is-the-slug) पर निर्भर करता है जो कभी नहीं बदलता है। एक अधिक विश्वसनीय विधि (आईएमओ), और एक जो इस मामले में फिट बैठता है, is_page_template('example-template.php')इसके बजाय सशर्त जांच का उपयोग करना होगा ।


22

आप is_page( 'landing-page-template-one' )अपने पृष्ठ विशिष्ट शैलियों / लिपियों के चारों ओर सशर्त का उपयोग अपने ओवर-सभी एन्क्यू बयानों के भाग के रूप में कर सकते हैं।

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

आप elseifअन्य पृष्ठों, आदि के लिए भी अधिक श्रृंखला बना सकते हैं ।

संदर्भ: कार्य संदर्भ -is_page()


आप शॉन का स्वागत करते हैं, मदद करने के लिए खुश हैं।
एडवर्ड कैसी

2
मुझे लगता is_page_template()है कि पेज स्लग आसानी से बदल जाने के बाद से उपयोग करना बेहतर है। यह समाधान, जबकि यह ठीक काम करता है, अगर स्लग को बदल दिया गया था, तो यह टूट जाएगा। अगर किसी को भविष्य में कोई समस्या आती है तो kjjr का समाधान देखें।
BODA82

धन्यवाद! इस पर ठोकर खाने वाले अन्य लोगों के लिए: सशर्त बयान is_pageकार्रवाई से जुड़े फ़ंक्शन में होना चाहिए और add_actionबयान को स्वयं लपेटना नहीं चाहिए । यदि आप add_actionएक सशर्त में बयान को लपेटते हैं, तो यह पृष्ठ के प्रसंस्करण में जल्दी पता लगाने के लिए होगा कि यह किस पृष्ठ पर है।
हेंडेका २५'१६

2

यदि पृष्ठ टेम्प्लेट थीम (WP 3.4 के बाद से) के एक उपनिर्देशिका में स्थित है, तो फ़ोल्डर का नाम और टेम्पलेट फ़ाइल नाम के लिए स्लैश प्रीपेन्ड करें, जैसे:

is_page_template( 'templates/about.php' );

तो, पूरे समारोह की तरह दिखते हैं:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

संदर्भ: आधिकारिक दस्तावेज


यह उल्लेख करने के लिए धन्यवाद कि is_page_template ()चेक एन्क्यू फ़ंक्शन के अंदर होना चाहिए, और इसके आसपास नहीं।
gregn3

1

मुझे नहीं पता कि अन्य उत्तरों में दिए गए समाधान काम करते थे, लेकिन (क्योंकि इसका कोई स्वीकृत उत्तर नहीं है!) ऐसा लगता है कि वर्तमान में सही उत्तर है:

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

is_page_template () केवल लूप के बाहर काम करता है, https://developer.wordpress.org/reference/functions/is_page_template/ के अनुसार ।


उल्लेख किए गए डॉक्स के अनुसार, इसका उपयोग लूप के अंदर नहीं किया जा सकता है
सेलरनॉड

पाश के बाहर । मैंने यही कहा ... * ब्लश *
रिचप्लेन

1

कहते हैं कि आपका टेम्प्लेट का नाम गुस्सा है और आप उस पेज पर बूटस्ट्रैप को लोड करना चाहते हैं ताकि आप इस तरह के विशिष्ट पेज टेम्प्लेट पर स्टाइल को समझ सकें:

करने के लिए जाना function.php फ़ाइल तो इस तरह की स्थिति की जांच:

function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

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