특정 페이지에 대해서만 조건부로 스타일 시트를 대기열에 넣는 방법은 무엇입니까?


11

시작하기 전에 페이지 / 포스트 컨텐츠를 기반으로 조건부로 스크립트를 대기열에 넣는 방법에 관한 훌륭한 기사가 있음을 알고 싶습니다.

이것들은 훌륭하지만, 내가하고 싶은 것보다 훨씬 진보되어 있습니다.

대답은 내장 is_page()함수 ( codex )를 사용하고있는 것처럼 느껴지 지만 사용하려고하면 사이트가 중단되거나 작동하지 않습니다.

조건부 논리를 잘못된 위치에서 실행하고 있다고 생각합니다.

다음은 functions.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' );

조건부 부분을 제거하면 스타일 시트가 성공적으로 대기열에 포함되어 작동한다는 것을 알 수 있습니다.


실제로 나는 또한 당신의 코드를 복사하여 붙여 넣기를 사용했고 그 작업은 완벽하게 강력한 텍스트
였습니다

답변:


4

귀하의 코드를 내 개발 환경에 붙여 넣고 페이지 이름 만 변경하면 정상적으로 작동합니다. 대기열에 포함되지 않았으며 잘못 지적했거나 페이지 이름이 잘못되었거나 다른 것이 아닌가?


1
고마워요, 작동합니다! 왜 그것이 이전에 작동하지 않았는지 모르겠습니다. 낯선 일이 일어난 것 같아요. 잘만되면 이것은 다른 누군가에게 사용될 것입니다.
Evan Mattson

2

당신이 가진 것은 옳습니다. 당신은 그것을 잘못된 행동에 연결하고 있습니다. "init"대신 "wp"작업을 시도하십시오. init이 실행될 때 is_page ()는 아직 제대로 작동하지 않습니다.

편집 : 나는 틀렸다. add_my_stylesheet가 init에 연결되어 있다고 생각했지만 그렇지 않습니다. is_page는 enqueue_scripts 조치에서 작동해야합니다. 미안 ... 계속해 ...


-1

동일한 코드를 따르려고했는데 동일한 결과를 얻을 수 있는지 확인했는데 is_page ()가 예상대로 작동하지 않습니다. 그래서 전역 변수 $ post를 따라 범주 이름 / 슬러그를 확인하고 후자는 간단한 텍스트 비교를 사용하여 작업을 결정합니다.

    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- 그리고 더/


질문을 했습니까? 그것은 단지 현재 주제에 대한 나의 대답입니다. 더 자세히 설명합니다.
Piclaunch S
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.