Як умовно заплести таблицю стилів лише для певної сторінки?


11

Перш ніж розпочати роботу, я хочу визнати, що є кілька дійсно хороших статей, які орієнтовані на те, як умовно заповідати сценарії на основі вмісту сторінки / публікації.

Вони чудові, але вони набагато досконаліші, ніж те, що я хочу зробити.

Я відчуваю, що у відповіді використовується вбудована is_page()функція ( кодекс ), але коли я намагаюся використовувати її, сайт зламається, або просто не працює.

Я думаю, що я просто виконую умовну логіку в неправильному місці.

Ось що я намагався додати до своїх функцій.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' );

Коли я видаляю умовну її частину, таблиця стилів успішно запускається, тому я знаю, що це працює.


Насправді я також використовував копію та вставлення вашого коду та його ідеально міцного тексту
abhishek abhi Abhi

Відповіді:


4

Я копіюю вставлений ваш код у моє середовище розробників, нічого не змінював, окрім назви сторінки, і він працює чудово. Ви впевнені, що це не зафіксовано, і ви просто вказали неправильно або що сторінка не названа неправильно чи щось таке?


1
Дякую, це працює! Я не знаю, чому раніше це не працювало. Мабуть, сталися чужі речі. Сподіваємось, це буде корисно комусь іншому.
Еван Маттсон

2

Те, що у вас є, правильно - ви просто підключаєте його до неправильних дій. Спробуйте дію "wp" замість "init". Коли програма init працює, is_page () ще не працює належним чином.

EDIT: Я помиляюся. Я думав, ти додав add_my_stylesheet для підключення до init, але це не так. is_page має працювати від дії enqueue_scripts. Вибачте ... продовжуйте ...


-1

Я намагався слідувати за тим самим кодом і бачити, чи можу я отримати такий же результат, те, що я помітив, is_page () працює не так, як очікувалося. тож я слідував за глобальною змінною $ post і перевіряв назву категорії / slug, а останній використовував просте порівняння тексту для вирішення дії.

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

Приклад: * Немає зайвих CSS http://whatsq.com/category/gst16/

* Додатковий CSS з фоном лише з вищевказаної категорії http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- і більше/


Я задав питання? Це лише моя відповідь на поточну тему. Що детальніше.
Піклун S
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.