सशर्त रूप से केवल एक निश्चित पृष्ठ (ओं) के लिए एक स्टाइलशीट कैसे संलग्न करें?


11

आरंभ करने से पहले, मैं यह स्वीकार करना चाहता हूं कि कुछ वास्तव में अच्छे लेख हैं जो लक्षित होते हैं कि पृष्ठ / पोस्ट सामग्री के आधार पर सशर्त रूप से स्क्रिप्ट को कैसे लागू किया जाए।

ये महान हैं, लेकिन मैं जो करना चाहता हूं, उससे कहीं अधिक उन्नत हैं।

मुझे लगता है कि उत्तर अंतर्निहित is_page()फ़ंक्शन ( कोडेक्स ) का उपयोग कर रहा है, लेकिन जब मैं इसका उपयोग करने की कोशिश करता हूं तो साइट टूट जाती है, या बस काम नहीं करता है।

मुझे लगता है कि मैं सशर्त तर्क को गलत जगह पर लागू कर रहा हूं।

यहाँ मैंने अपने फंक्शन्स को जोड़ने की कोशिश की है।

function wpse39130_register_more_stylesheets() {
    wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
}
add_action( 'init', 'wpse39130_register_more_stylesheets' );

function wpse39130_conditionally_enqueue_my_stylesheet() {
    // only enqueue on product-services page slug
    if ( is_page( 'products-services' ) ) {
        wp_enqueue_style( 'stylesheet_name' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );

जब मैं इसके सशर्त भाग को हटाता हूं, तो स्टाइलशीट को सफलतापूर्वक संलग्न किया जाता है इसलिए मुझे पता है कि काम करता है।


वास्तव में मैंने आपके कोड और उसके काम को पूरी तरह से मजबूत पाठ की
अभिषेक अभि

जवाबों:


4

मैंने आपके कोड को अपने देव परिवेश में कॉपी किया, पृष्ठ नाम के अलावा कुछ नहीं बदला और यह ठीक काम करता है। क्या आप सुनिश्चित हैं कि इसे लागू नहीं किया जा रहा है और आपने इसे गलत बताया है या पृष्ठ का नाम गलत नहीं है या कुछ और?


1
धन्यवाद, यह काम करता है! मुझे नहीं पता कि यह पहले क्यों काम नहीं कर रहा था। अजीब चीजें हुई हैं मुझे लगता है। उम्मीद है कि यह किसी और के काम आएगा।
इवान मैटसन

2

आपको जो मिला है वह सही है - आप इसे गलत कार्रवाई के लिए हुक कर रहे हैं। "Init" के बजाय "wp" क्रिया आज़माएँ। जब यह चलता है, तो is_page () अभी तक ठीक से काम नहीं करेगा।

संपादित करें: मैं गलत हूँ। मैंने सोचा था कि आपके पास in_my_stylesheet init पर झुका था, लेकिन आप नहीं। is_page को enqueue_scripts क्रिया से काम करना चाहिए। क्षमा करें ... जारी रखें ...


-1

मैं उसी कोड का पालन करने की कोशिश कर रहा था और यह देख रहा था कि क्या मुझे वही परिणाम मिल सकता है, जो मैंने देखा है_ पृष्ठ () उम्मीद के मुताबिक काम नहीं करता है। इसलिए मैंने वैश्विक चर $ पोस्ट का अनुसरण किया और कार्रवाई का निर्णय करने के लिए श्रेणी के नाम / स्लग और बाद के उपयोग के सरल पाठ की तुलना की।

    global $post;
    $postcat = get_the_category( $post->ID );
if ( ! empty( $postcat ) ) {
 echo esc_html( $postcat[0]->ID );   // Debug 
 echo esc_html( $postcat[1]->name ); // Debug 
 echo var_dump($postcat ); // Debug 
}

श्रेणी का मान यदि उसकी सिर्फ एक श्रेणी (उपश्रेणी नहीं) होगी

echo esc_html( $postcat[0]->name ); //Display name on screen

उप श्रेणी के लिए आपको निम्नलिखित चर भरना होगा

echo esc_html( $postcat[1]->name ); //Display name on screen

अब आपकी आवश्यकता के आधार पर नीचे दिए गए कोड का उपयोग करें, जैसे कि मैं उपश्रेणी नाम की जांच करने के लिए उपयोग कर रहा हूं:

//Use $postcat[0]->name for parent category name Can be your sub category name 
        if ( $postcat[1]->name == 'Shopping' ) { 

                wp_enqueue_style( 'stylesheet_name' );
            }else{
        // other code 
        }

पूर्ण कोड:

        function wpse39130_register_more_stylesheets() {
        wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/whatsqshop.css' );
    }
    add_action( 'init', 'wpse39130_register_more_stylesheets' );

    function wpse39130_conditionally_enqueue_my_stylesheet() {
        // only enqueue on product-services page slug
    global $post; //GLobal Post variable 
    $postcat = get_the_category( $post->ID ); // Get the Category info from POST ID

    if ( ! empty( $postcat ) ) { // IF POST CATEGORY IS NOT EMPTY
    //    echo esc_html( $postcat[0]->slug );   //Display SLUG On output screen <Debug option>
  //echo esc_html( $postcat[0]->name ); //Display name on screen
     //echo esc_html( $postcat[1]->name ); //Display name on screen

    //echo var_dump($postcat ); // For debug 
    }
    //  if( is_single(88)) {
       if ( $postcat[1]->name == 'Shopping' ) {
            wp_enqueue_style( 'stylesheet_name' );
        }else{
    //wp_enqueue_style( 'stylesheet_name' );
    }

    }
    add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );

उदाहरण: * कोई अतिरिक्त सीएसएस http://whatsq.com/category/gst16/

* उपरोक्त श्रेणी की पृष्ठभूमि वाली अतिरिक्त सीएसएस केवल http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- और अधिक/


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