답변:
자식 테마는 get_template_part 또는 get_header 등과 같은 함수에 포함 된 PHP 파일 (예 : header.php) 만 재정의합니다.
WordPress에 스크립트를 추가하는 올바른 방법은 wp_enqueue_script 입니다. 부모 테마에서이를 사용하는 경우 wp_dequeue_script 를 사용 하고 자신의 큐 를 작성하여 JS 파일을 대체 할 수 있습니다 .
이렇게 ...
<?php
// hook in late to make sure the parent theme's registration
// has fired so you can undo it. Otherwise the parent will simply
// enqueue its script anyway.
add_action('wp_enqueue_scripts', 'wpse26822_script_fix', 100);
function wpse26822_script_fix()
{
wp_dequeue_script('parent_theme_script_handle');
wp_enqueue_script('child_theme_script_handle', get_stylesheet_directory_uri().'/scripts/yourjs.js', array('jquery'));
}
부모 테마가 wp_enqueue_script를 사용하지 않는 경우 아마도 wp_head (또는 wp_footer)에 연결하여 스크립트를 반향 할 수 있습니다. 따라서 remove_action 을 사용 하여 스크립트를 에코하는 기능을 제거하고 자신의 스크립트를 대기열에 넣습니다.
스크립트가 템플릿 파일에 하드 코딩 된 경우 스크립트 태그없이 하위 테마에서 해당 템플릿 파일을 교체하기 만하면됩니다.
그들이 사용 wp_enqueue_script 통화를 사용하는 경우 get_stylesheet_directory_uri을 , 당신은 아무것도 할 필요가 없습니다. 이런 일이 일어나지 않기 때문에 테마 제작자가 한 일을보고 싶을뿐입니다.
wp_enqueue_scripts
에는 프런트 엔드에서 스크립트 만 대기열에 넣는 데 사용할 수있었습니다. 업데이트되었습니다. 오래된 것이 있으면 언제든지 편집하십시오.
add_action( 'wp_enqueue_scripts', 'wpse26822_script_fix', 100 );
에서 codex.wordpress.org/Function_Reference/wp_dequeue_script
wp_deregister_script('parent-script-handle');
완전히 부모 스크립트를 제거 할 수 있습니다. 실제로, 그것이 없으면 저에게는 효과가 없었습니다. WP 4.6.1
경우에 따라 다음과 같이 add_action 및 wp_enqueue_script 함수 호출의 우선 순위를 지정해야합니다.
add_action('wp_enqueue_scripts', 'wpse26822_script_fix', 20120207);
function wpse26822_script_fix()
{
wp_dequeue_script('storefront-navigation');
wp_enqueue_script('my_storefront-navigation', get_stylesheet_directory_uri().'/js/navigation.min.js', array('jquery'),20151110,true);
}
이 경우 wp_enqueue_scripts가 우선 순위가 20120206 (날짜) 인 상위에 의해 호출되었으므로이 조치는 우선 순위가 거의 더해져 즉시 큐에서 제외됩니다. 그런 다음 뒤에 오는 대기열에있는 대기열은 실제로 이전 대기열이 대기열에 들어간 후에로드되도록하기 위해 우선 순위가 결정됩니다. 이 경우 부모 스크립트가 처음으로 대기열에 추가 된 바닥 글에 대기열에 포함되도록 지정하기 때문에이 경우에도 중요합니다.
또한 완전히 설명 할 수는 없지만 초기 스크립트를 대기열에 넣은 직후에 대기열에서 꺼내는 데주의를 기울이면 처음에로드되지 않도록 효과적으로 막을 수 있습니다.
wp_enqueue_script
에는 우선 순위 매개 변수가 없으며 경로 끝에 쿼리 문자열로 연결된 버전 번호 일뿐입니다. 이 매개 변수는 캐싱 [...]에 관계없이 클라이언트에 올바른 버전이 전송되도록합니다.
자신의 버전을 등록하기 전에 wp_deregister_script 를 호출 하십시오.
// enqueue your required script file
add_action('wp_enqueue_scripts', 'your_child_theme_js_file_override');
function your_child_theme_js_file_override(){
wp_enqueue_script( 'child_theme_script_handle', get_stylesheet_directory_uri() . '/assets/js/your-file.js', array('jquery' ) );
}
// dequeue your required script file
function your_child_theme_js_file_dequeue() {
wp_dequeue_script( 'parent_theme_script_handle' );
}
add_action( 'wp_print_scripts', 'your_child_theme_js_file_dequeue', 100 );