我是否应该要求主题开发人员使用LOCATE_TEMPLATE而不是REQUIRED_ONCE

时间:2013-02-16 作者:Anagio

我今天创建了一个子主题,需要覆盖一个php文件,该文件是使用此代码包含在主题函数中的。php文件

require_once( get_template_directory() . \'/function-includes/theme-functions.php\' );

我试过使用require_once( get_stylesheet_directory(). \'/function-includes/theme-functions.php\' ); 在我的子主题函数文件中,但它导致了一个错误,并且根本没有加载站点。

所以我最终使用locate_template( \'/function-includes/theme-functions.php\', true ); 在父主题函数中。php文件

locate_template 主题开发人员可以使用更好的方法来开发子主题?

是否有其他方法可以仅使用我的子主题函数。php来覆盖该主题函数。php文件?

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

一般来说,儿童主题最初旨在做两件事:

我怀疑主题开发人员是否打算/function-includes/theme-functions.php 要被子主题覆盖的文件。功能文件通常是主题的核心组件,允许子主题全面覆盖它们会给主题带来严重的开发复杂性。

与其要求功能文件能够被子主题覆盖,我宁愿要求开发人员使自定义函数输出可过滤,或者(在适当的情况下)使一些自定义函数可插入(到目前为止,我更喜欢可过滤的函数输出而不是可插入的函数)。

SO网友:Adam

您正在尝试检索theme-functions.php 位于父主题目录中的文件?

如果要从父主题目录调用文件,则必须使用,

get_template_directory()
如果要从子主题目录调用文件,请使用,

get_stylesheet_directory()

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php