将脚本从父主题继承到子主题

时间:2016-08-22 作者:eggman

因此,我得到了一个parenttheme,它可以生成这样的脚本:

function my_scripts() {
    wp_deregister_script(\'jquery\');
    wp_enqueue_script( \'modernizr\', get_stylesheet_directory_uri().\'/assets/js/dist/modernizr.min.js\', array(), \'1.0\', false );
    wp_enqueue_script( \'jquery\', get_stylesheet_directory_uri().\'/assets/js/dist/jquery.min.js\', array(), \'1.0\', false );
    wp_register_script( \'scripts\', get_stylesheet_directory_uri().\'/assets/js/dist/scripts.min.js\', array(), \'1.0\', true );
    wp_enqueue_style( \'fonts\', \'https://fonts.googleapis.com/css?family=Lora:400,400italic\', array(), \'1\', \'screen,projection\' );
    wp_enqueue_style( \'style\', get_stylesheet_directory_uri().\'/style.css\', array(), \'1\', \'screen,projection\' );

}
add_action( \'wp_enqueue_scripts\', \'my_scripts\' );
我应该补充说,我正在使用gulp缩小上述脚本,并将它们放在dist-文件夹

在父主题中一切正常,但我现在创建了一个子主题,但找不到脚本。

控制台日志:

http://localhost:3000/PARENT/wp-content/themes/CHILD/assets/js/dist/jquery.min.js?ver=1.0 - 404
我的子主题中只有2个文件:

风格css:/*

 Theme Name:     child
 Description:    parent child theme
 Template:       parent
 Version:        1.0.0
*/
和功能。php:

<?php

add_action( \'wp_enqueue_scripts\', \'enqueue_parent_styles\' );

function enqueue_parent_styles() {
 wp_enqueue_style( \'parent-style\', get_template_directory_uri().\'/style.css\' );
}
 ?>
我不知道错误的原因,但我的一些想法是:

由于我使用gulp缩小脚本,可能在子主题搜索脚本时尚未创建脚本。

如上所述,代码在以下位置查找文件:子主题:

ttp://localhost:3000/PARENT/wp-内容/主题/子/资产/js/dist/jquery。min.js?ver=1.0-

也许它应该在父目录中查找文件?

感谢您的帮助。非常感谢。

1 个回复
最合适的回答,由SO网友:Rishabh 整理而成

这是因为父主题使用get_stylesheet_directory_uri() 调用脚本。通过此功能,它将搜索子主题文件夹中的文件(bcause child-theme的style.css由活动主题使用),其中不存在此类文件。此函数用于搜索样式为的主题文件夹。css文件正在活动主题中使用。现在您的子主题处于活动状态(在外观>主题中)。

如果要调用该脚本,请在子主题的函数中使用该脚本。像这样的php

function my_scripts() {
    wp_deregister_script(\'jquery\');
    wp_enqueue_script( \'modernizr\', get_template_directory_uri().\'/assets/js/dist/modernizr.min.js\', array(), \'1.0\', false );
    wp_enqueue_script( \'jquery\', get_template_directory_uri().\'/assets/js/dist/jquery.min.js\', array(), \'1.0\', false );
    wp_register_script( \'scripts\', get_template_directory_uri().\'/assets/js/dist/scripts.min.js\', array(), \'1.0\', true );
    wp_enqueue_style( \'fonts\', \'https://fonts.googleapis.com/css?family=Lora:400,400italic\', array(), \'1\', \'screen,projection\' );
    wp_enqueue_style( \'style\', get_template_directory_uri().\'/style.css\', array(), \'1\', \'screen,projection\' );

}
add_action( \'wp_enqueue_scripts\', \'my_scripts\' );
在上面的代码中,我只是替换get_stylesheet_directory_uri() 具有get_template_directory_uri().

get_template_directory_uri() 函数将在父主题中搜索文件。