子主题中的GET_STYLESET_DIRECTORY()中断父脚本

时间:2016-02-23 作者:skv

我努力寻找另一个问题来回答我的问题,但失败了,所以如果你指出任何重复的问题,这将有所帮助。

这是我的情况

我有一个父主题,我正在为一些我想开发的功能开发一个子主题,在我调用的子主题中wp_enqueue_script 多次。父主题有自己的脚本和样式列表。

问题是,一旦我有一个子主题get\\u stylesheet\\u目录指向子主题,我就试图找到一种方法来避免这种情况,而不必修改父主题。

以下是我尝试过的两种方法

//first method where I tried enqueue
add_action( \'wp_enqueue_scripts\', \'custom_child_theme_styles\' );

//ensure that the child theme scripts are called after the old theme 
add_action( \'after_setup_theme\', \'custom_child_theme_scripts\' );
这就是父主题所做的

add_action( \'wp_enqueue_scripts\', \'theme_scripts_styles\' );
当父主题调用get\\u stylesheet\\u directory()时,它指向子主题文件夹,因此根本不会加载来自父主题的Javascript。

1 个回复
SO网友:Tom J Nowell

您在这里面临的问题可以通过更改正在使用的函数来解决:

  • get_stylesheet_directory 将为您提供当前活动主题的目录,即活动主题的位置style.css
  • get_template_directory 将为您提供活动主题的目录,也称为父主题对于大多数主题,这两个主题的结果相同,但:

    始终使用get_stylesheet_directory 当提及子主题中的内容时,始终使用get_template_directory 在父主题中时,始终使用get_template_part 要加载模板,请不要使用前2个功能使用includerequire 加载不包含类或PHP include等模板的文件。如果需要重写这些,请使用挂钩和操作通过remove_action etc尽量减少子主题和父主题之间的任何串扰。子主题不应尝试在父主题等中包含文件,而应通过get_template_part

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c