Get_Parent_Theme_FILE_PATH与GET_TEMPLATE_DIRECTORY

时间:2017-02-23 作者:Sirmontegu

我一直在读关于referencing theme location 在v4中添加。7.

我通读了trac ticket. 我理解他们为什么创建这些功能以及get_theme_file_path() 用于子主题。但除了语言清晰之外,使用get_parent_theme_file_path() 结束get_template_directory() 在父主题中引用文件时?

1 个回复
SO网友:bravokeyl

在get\\u template\\u directory()上使用get\\u parent\\u theme\\u file\\u path()是否有特定原因

对此新功能附带一个过滤器

如果查看get_parent_theme_file_path() 来源,它刚刚回来get_template_directory() 具有额外的功能,例如如果将文件作为get_parent_theme_file_path 它返回文件的路径,并且parent_theme_file_path 可以很好地覆盖的过滤器。

get_parent_theme_file_path 为保持一致性并允许轻松覆盖子主题而引入。我看不出用这个代替get_template_directory.

我写了一个post 在这些函数上,这可能会有所帮助。

Use case:

假设您在主题中包含一个文件,使用get_template_directory 如下所示。

include(get_template_directory().\'/inc/bk.php\'); /*../themes/bk-theme/inc/bk.php */
如果你想覆盖bk.php 在儿童主题中不是possible

如果在新函数中包含相同的文件

include(get_parent_theme_file_path(\'inc/bk.php\')); /*../bk-theme/inc/bk.php */
您可以使用parent_theme_file_path 如下所示

add_filter(\'parent_theme_file_path\',\'bk_257597_parent_theme_file\',10,2);
function bk_257597_parent_theme_file($path,$file){
 if(\'inc/bk.php\' == $file) {
  //do something
  $file = \'my-file\';
  $path = \'my-path\'.$file;
 }
 return $path;
}

相关推荐

Child-theme breaks site

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