Làm thế nào để có điều kiện enqueue một bản định kiểu chỉ cho một (các) trang nhất định?


11

Trước khi bắt đầu, tôi muốn thừa nhận rằng có một số bài viết thực sự hay được nhắm mục tiêu làm thế nào để điều chỉnh các kịch bản dựa trên nội dung trang / bài đăng.

Đây là những điều tuyệt vời, nhưng chúng tiên tiến hơn nhiều so với những gì tôi muốn làm.

Tôi cảm thấy như câu trả lời đang sử dụng is_page()chức năng tích hợp ( codex ), nhưng khi tôi cố gắng sử dụng thì trang web bị hỏng hoặc chỉ không hoạt động.

Tôi nghĩ rằng tôi chỉ đang thực hiện logic điều kiện ở sai điểm.

Đây là những gì tôi đã cố gắng thêm vào chức năng của mình.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' );

Khi tôi loại bỏ phần có điều kiện của nó, biểu định kiểu được liệt kê thành công để tôi biết rằng nó hoạt động.


Trên thực tế tôi cũng đã sử dụng bản sao và dán mã của bạn và văn bản
abhishek abhi Abhi

Câu trả lời:


4

Tôi sao chép mã của bạn vào môi trường dev của tôi, không thay đổi gì ngoài tên trang và nó hoạt động tốt. Bạn có chắc chắn rằng nó không bị mê hoặc và bạn đã chỉ sai hoặc trang không được đặt tên không chính xác hoặc một cái gì đó?


1
Cảm ơn, nó không hoạt động! Tôi không biết tại sao nó không hoạt động trước đây. Những điều lạ lùng đã xảy ra tôi đoán. Hy vọng điều này sẽ được sử dụng cho người khác.
Evan Mattson

2

Những gì bạn đã có là đúng - bạn chỉ móc nó vào hành động sai. Hãy thử hành động "wp" thay vì "init". Khi init chạy, is_page () sẽ không hoạt động đúng.

EDIT: Tôi sai. Tôi nghĩ rằng bạn đã có add_my_stylesheet được nối với init, nhưng bạn thì không. is_page nên hoạt động từ hành động enqueue_scripts. Xin lỗi ... tiếp tục ...


-1

Tôi đã cố gắng làm theo cùng một mã và xem liệu tôi có thể nhận được kết quả tương tự không, điều tôi nhận thấy là is_page () không hoạt động như mong đợi. Vì vậy, tôi đã theo dõi biến toàn cầu $ post và kiểm tra tên danh mục / sên và sau đó sử dụng văn bản so sánh đơn giản để quyết định hành động.

    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 
}

Giá trị của danh mục nếu chỉ là một danh mục (không phải danh mục con) sẽ là

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

Đối với danh mục phụ, bạn sẽ có biến sau đây được điền vào

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

Bây giờ dựa trên nhu cầu của bạn, hãy sử dụng mã bên dưới, như tôi đang sử dụng để kiểm tra tên danh mục con:

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

Mã đầy đủ:

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

Ví dụ: * Không có CSS ​​bổ sung http://whatsq.com/c Ab / gst16 /

* Thêm CSS với nền từ danh mục trên chỉ http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- và hơn thế nữa/


Tôi đã hỏi một câu hỏi? Nó chỉ là câu trả lời của tôi cho chủ đề hiện tại. Mà chi tiết hơn.
Piclaunch S
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.