programing

하위 테마에서 상위 테마 javascript를 재정의하는 중

showcode 2023. 3. 21. 22:44
반응형

하위 테마에서 상위 테마 javascript를 재정의하는 중

부모 테마에는 스크립트가 포함되어 있습니다.\js\custom.js에는 스크립트가 포함되어 있습니다.자녀 테마에서 덮어쓰려고 합니다.부모 테마를 보면 다음 코드를 사용하여 큐잉되어 있음을 알 수 있습니다. (wp_enqueue_script() 콜의 관련 없는 행을 몇 개 잘라냈습니다.)

function my_deregister_scripts() {
        wp_deregister_script( 'jquery' );
        wp_enqueue_script('jquery', get_template_directory_uri().'/includes/js/jquery.min.js', false, '1.6.4');
        wp_enqueue_script('jquery-custom', get_template_directory_uri().'/includes/js/custom.js', false, '1.0');
        if ( is_singular() && get_option('thread_comments') ) wp_enqueue_script( 'comment-reply' );
}

처음에, 저는 단순히 제 아이 기능에 코드를 추가할 수 있다고 생각했습니다.php는 다음과 같습니다.

function custom_script_fix()
{
    wp_dequeue_script( 'jquery-custom' );
    wp_enqueue_script( 'child-jquery-custom', get_stylesheet_directory_uri() .'/includes/js/custom.js', false, '1.0');
}
add_action( 'wp_enqueue_scripts', 'custom_script_fix' );

그런데 고문서에서 읽었는데 요즘엔 아이가 제 기능을 한다고 하더군요php는 부모 functions.display 직전에 실행됩니다.이것은 부모 함수.php에서 다시 큐잉될 가능성이 높은 무언가를 큐잉 해제하고 있음을 의미합니다.그러면 스크립트가 먼저 로드되고 다음으로 부모 스크립트가 로드됩니다.

보시는 바와 같이 자녀 스크립트가 로드되고 다음으로 부모가 로드됩니다.

부모 테마를 수정하지 않고 어떻게 하면 좋을까요?

스크립트를 등록하고 부모 테마에서 사용되고 있는 것과 같은 핸들을 사용하는 것만으로 우선합니다.따라서 부모 테마가 자체 버전을 큐잉할 때 핸들은 이미 할당되어 있고 대신 오버라이드를 큐잉합니다.

function custom_script_fix()
{
    // use same handle as parent theme to override ('jquery-custom')
    wp_register_script('jquery-custom', get_stylesheet_directory_uri() .'/includes/js/custom.js', false, '1.0');
}

add_action( 'wp_enqueue_scripts', 'custom_script_fix' );

의 설명에서는 등록된 버전을 대체하지 않습니다.하한값을 설정해야 할 수 있습니다.$priority를 클릭하여 덮어쓰기 스크립트가 먼저 등록되었는지 확인합니다.

언급URL : https://stackoverflow.com/questions/24430903/overriding-parent-theme-javascript-from-child-theme

반응형