자식 테마에서 스크립트와 스타일을 올바르게 큐잉하는 방법은 무엇입니까?


11

내 프로젝트 중 하나에서 부모 테마와 자식 테마를 만들었습니다. 아래처럼 부모 테마에 CSS와 JavaScript를 넣었습니다.

function project_necessary_scripts() {
    //Stylesheets
    wp_register_style( 'bootstrap-css', get_template_directory_uri() .'/css/bootstrap.min.css' );
    wp_register_style( 'bootstrap-map', get_template_directory_uri() .'/css/bootstrap.css.map' );
    wp_register_style( 'project-css', get_stylesheet_uri() );

    wp_enqueue_style( 'bootstrap-css' );
    wp_enqueue_style( 'bootstrap-map' );
    wp_enqueue_style( 'project-css' );

    //JavaScripts
    wp_register_script( 'modernizr-js', get_template_directory_uri() .'/js/modernizr-2.8.3.min.js', array(), '2.8.3' );
    wp_register_script( 'project-js', get_template_directory_uri() .'/js/project.min.js', array('jquery'), '20150401', true );

    wp_enqueue_script( 'modernizr-js' );
    wp_enqueue_script( 'project-js' );
}
add_action( 'wp_enqueue_scripts', 'project_necessary_scripts' );

이제 내 어린이 테마 에서 일부 스타일 시트와 자바 스크립트를 대기열에서 제거하고 싶습니다. 그래서 나는 다음 코드를 사용했다 :

function project_dequeue_unnecessary_scripts() {
    wp_dequeue_style( 'bootstrap-map' );
    wp_dequeue_script( 'modernizr-js' );
    wp_dequeue_script( 'project-js' );
}
add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts' );

그러나 실제로 bootstrap.css.map파일은 여전히 ​​대기열에 있지만 modernizr-js project-js는로드되지 않으므로 부분적으로 작동합니다. 어떻게 해결할 수 있습니까?

나는 행동 우선 순위를 시도했다.

add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts', 11 );

답변:


24

올바른 경로에 있기 때문에 솔루션에 매우 가까이 있습니다. 조금만 조정하면됩니다.

이러한 두 가지 행동 고리가 있습니다.

  1. wp_print_scripts,
  2. wp_print_styles

그래서 당신이 할 수있는 방법은 다음과 같습니다.

//Dequeue Styles
function project_dequeue_unnecessary_styles() {
    wp_dequeue_style( 'bootstrap-map' );
        wp_deregister_style( 'bootstrap-map' );
}
add_action( 'wp_print_styles', 'project_dequeue_unnecessary_styles' );

//Dequeue JavaScripts
function project_dequeue_unnecessary_scripts() {
    wp_dequeue_script( 'modernizr-js' );
        wp_deregister_script( 'modernizr-js' );
    wp_dequeue_script( 'project-js' );
        wp_deregister_script( 'project-js' );
}
add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts' );

올바른 방법은 대기열 옆에 등록을 취소하는 것입니다. 따라서 먼저 대기열을 제거한 다음 그에 따라 등록을 취소하십시오.


문서 에 따르면 : WordPress 3.3부터 스타일이나 스크립트를 대기열에 넣는 데 wp_print_scripts를 사용해서는 안됩니다. 대신 wp_enqueue_scripts를 사용하십시오.
rok

@ user1264304 우리는 여기서 물건을 대기열에 넣지 않고 물건을 대기열에 넣습니다.
Mayeenul 이슬람

1
네,하지만에 따라 링크 , 하나는 사용해야합니다add_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
한국
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.