我的父主题在\ includes \ 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' );
}
起初,我以为我可以简单地将一些代码添加到我自己的子function.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在父函数.php之前运行。这意味着我在父函数.php中出列的东西将会被匆匆排队。这导致我的脚本首先被加载,然后是父脚本:
那么,如果不以任何方式修改父主题,我该如何做呢?
答案 0 :(得分:10)
我明白了:通过简单地将脚本排队并使用在父主题中使用的相同句柄,它优先。因此,当父主题绕过它自己的版本时,句柄已经被分配,并且什么都不做。下面是我使用的代码:
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');
wp_enqueue_script( 'jquery-custom');
}
add_action( 'wp_enqueue_scripts', 'custom_script_fix' );