Bir stil sayfasını yalnızca belirli sayfalar için koşullu olarak nasıl sıralarsınız?


11

Başlamadan önce, sayfa / yayın içeriğine dayalı olarak komut dosyalarını koşullu olarak nasıl sıralayacağınızı hedefleyen gerçekten iyi makaleler olduğunu kabul etmek istiyorum.

Bunlar harika, ama yapmak istediğimden çok daha gelişmişler.

Yanıt yerleşik is_page()işlevi ( codex ) kullanıyor gibi hissediyorum , ancak kullanmaya çalıştığınızda site kırılıyor veya çalışmıyor.

Sanırım sadece koşullu mantığı yanlış yerde yürütüyorum.

İşlevlerime eklemeye çalıştığım şey: 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' );

Koşullu kısmını kaldırdığımda, stil sayfasının başarıyla sıralandığı için çalıştığını biliyorum.


Aslında ben de kodunuzu ve onun çalışma mükemmel güçlü bir metin
Abhishek Abhi Abhi

Yanıtlar:


4

Kodunuzu geliştirici ortamıma kopyaladım, sayfa adından başka bir şey değiştirmedim ve gayet iyi çalışıyor. Sıkıştırılmadığından ve yalnızca yanlış işaret ettiğinden veya sayfanın yanlış adlandırılmadığından emin misiniz?


1
Teşekkürler, işe yarıyor! Daha önce neden çalışmadığını bilmiyorum. Sanırım yabancı şeyler oldu. Umarım bu başka birine faydalı olacaktır.
Evan Mattson

2

Sahip olduğunuz doğru - sadece yanlış eyleme bağlıyorsunuz. "İnit" yerine "wp" eylemini deneyin. İnit çalıştırıldığında, is_page () henüz düzgün çalışmaz.

EDIT: Yanılıyorum. Başlamak için add_my_stylesheet bağladım, ama değil düşündüm. is_page enqueue_scripts eyleminden çalışmalıdır. Üzgünüm ... devam et ...


-1

Aynı kodu takip etmeye çalışıyordum ve aynı sonucu elde edip edemeyeceğimi görüyorum, ne fark ettim is_page () beklendiği gibi çalışmıyor. bu yüzden $ global değişkenini takip ettim ve kategori adını / slug'unu kontrol ettim ve ikincisi, eyleme karar vermek için basit metin karşılaştırması kullan.

    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 
}

Yalnızca bir kategorisi (alt kategori değil) kategorinin değeri

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

Alt kategori için aşağıdaki değişken doldurulur

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

Şimdi ihtiyaca dayalı olarak, alt kategori adını kontrol etmek için kullanıyorum gibi aşağıdaki kodu kullanın:

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

Tam Kod:

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

Örnek: * Fazladan CSS Yok http://whatsq.com/category/gst16/

* Sadece yukarıdaki kategoriden Arkaplanlı Ek CSS http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- ve dahası/


Bir soru sordum mu? Sadece şu anki konuya cevabım. Hangi daha ayrıntılı.
Piclaunch S
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.