是否覆盖子主题中的GET_TEMPLATE_DIRECTORY()?

时间:2015-06-27 作者:Heather

是否可以更换get_template_directory() 在我孩子的功能中。php文件?

我要更改文件:

/**
* Load Custom Post types file.
*/
require get_template_directory() . \'/inc/post-types.php\';
很明显,我希望在更新主题时不要覆盖我的作品,那么我可以取消注册父文件,然后在我孩子的函数文件中重新注册我孩子的文件吗?

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

回答较晚,但在Wordpress 4.7中引入了两个新功能来解决此问题。

get_theme_file_path() (用于绝对文件路径)和get_theme_file_uri() (对于URL)的工作方式如下get_template_part() 因为他们将首先自动在子主题中查找该文件,然后回退到父主题。

在您的示例中,可以使用4.7将其重写为如下所示:

/**
* Load Custom Post types file.
*/
require get_theme_file_path( \'inc/post-types.php\' );
更多信息请参见:https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/

SO网友:James Barrett

您需要使用get_stylesheet_directory_uri() 而不是get_template_directory() 在您的孩子主题中。

来自WordPress codex:

get_template_directory_uri()

在使用子主题的情况下,将返回父主题目录URI。get\\u template\\u directory\\u uri()应用于不打算包含在子主题中或被子主题覆盖的资源。使用get\\u stylesheet\\u directory\\u uri()来包含打算包含在子主题中/由子主题覆盖的资源。

get_stylesheet_directory_uri()

如果正在使用子主题,此函数将返回子主题目录URI。使用get\\u template\\u directory\\u uri()避免被子主题覆盖。

结束

相关推荐

为什么不在插件中包含对/wp-admin/admin.php的引用

联系表单7最近推出了一个更新,导致其他插件出现一些冲突。WPCF7的作者解释说,这是因为插件包括对wp-admin/admin.php 在他们的脚本中,你不应该在插件中这样做。Takayuki Miyoshi 解释它here 但我不确定我是否完全理解为什么这会引起任何问题,或者这与打电话给say有什么不同wp-load.php.有人能解释一下为什么建议不要加载wp-admin/admin.php 在你的插件中,它是如何引起问题的?