Come accodare condizionalmente un foglio di stile solo per una o più pagine?


11

Prima di iniziare, voglio riconoscere che ci sono alcuni articoli davvero validi che hanno come target l'accodamento condizionale degli script in base al contenuto di pagine / post.

Sono fantastici, ma sono molto più avanzati di quello che voglio fare.

Sento che la risposta sta usando la is_page()funzione integrata ( codice ), ma quando provo ad usarla il sito si interrompe o semplicemente non funziona.

Penso che sto solo eseguendo la logica condizionale nel posto sbagliato.

Ecco cosa ho provato ad aggiungere al mio function.php:

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' );

Quando rimuovo la parte condizionale di esso, il foglio di stile viene accodato con successo, quindi so che funziona.


In realtà ho anche usato copia e incolla il tuo codice e il suo testo
abhishek abhi Abhi

Risposte:


4

Copio il codice incollato nel mio ambiente di sviluppo, non ho cambiato altro che il nome della pagina e funziona perfettamente. Sei sicuro che non sia stato accodato e hai semplicemente indicato che non è corretto o che la pagina non ha un nome errato o qualcosa del genere?


1
Grazie, funziona! Non so perché non funzionasse prima. Sono successe cose più strane, immagino. Spero che questo possa essere utile a qualcun altro.
Evan Mattson il

2

Quello che hai è giusto - lo stai solo collegando all'azione sbagliata. Prova l'azione "wp" invece di "init". Quando init viene eseguito, is_page () non funzionerà ancora correttamente.

EDIT: mi sbaglio. Pensavo avessi agganciato add_my_stylesheet a init, ma tu no. is_page dovrebbe funzionare dall'azione enqueue_scripts. Scusa ... continua ...


-1

Stavo cercando di seguire lo stesso codice e vedere se riesco a ottenere lo stesso risultato, quello che ho notato is_page () non funziona come previsto. così ho seguito la variabile globale $ post e controllato il nome della categoria / lumaca e quest'ultimo usa un semplice confronto di testo per decidere l'azione.

    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 
}

Il valore di categoria se fosse solo una categoria (non sottocategoria) sarebbe

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

Per la sottocategoria avrai compilato la seguente variabile

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

Ora in base alle tue necessità usa il codice qui sotto, come sto usando per controllare il nome della sottocategoria:

//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 
        }

Codice completo:

        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' );

Esempio: * Nessun CSS aggiuntivo http://whatsq.com/category/gst16/

* CSS aggiuntivo con sfondo della categoria precedente solo http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- and-more /


Ho fatto una domanda? È solo la mia risposta all'argomento attuale. Che è più in dettaglio.
Piclaunch S
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.