如何用子主题模板文件(同名)覆盖主题模板文件

时间:2014-09-28 作者:drake035

在我的主题中functions.php 我有:

require_once (THEME_PATH . "/woocommerce/tw_woocommerce.php");
因此,我在我的子主题文件夹中创建了一个woocommerce文件夹,并复制了tw_woocommerce.php 文件然而,这仍然是主题tw_woocommerce.php WP使用的。

为什么以及如何使其使用文件的“我的子主题”副本?

2 个回复
SO网友:vimes1984

直接来自Woocommerce:

http://docs.woothemes.com/document/template-structure/

WooCommerce的模板文件包含商店前端(和HTML电子邮件)的标记和模板结构。如果打开这些文件,您会注意到它们都包含许多挂钩,允许您添加/移动内容,而无需编辑模板文件本身。这种方法可以进一步防止任何升级问题,因为模板文件可以保持完全不变。

或者,您可以通过覆盖以升级安全的方式编辑这些文件。只需将其复制到名为/woocommerce的主题中的一个目录中,并保持相同的文件结构。

示例:要覆盖管理订单通知,请复制:woocommerce/模板/电子邮件/管理新订单。php到yourtheme/woocommerce/emails/admin新订单。php复制的文件现在将覆盖WooCommerce默认模板文件。不要在核心插件本身中编辑这些文件,因为它们在升级过程中会被覆盖,任何自定义都将丢失。

模板文件可以在/woocommerce/templates/directory中找到。

SO网友:mrwweb

您的父主题(如果您构建了它)应该使用get_template_part() 而不是require_once(). 使用get_template_part() 在功能上是等效的(实际上,它更好),并将允许您期望的覆盖能力。

我假设THEME_PATH 常量不考虑活动主题是子主题还是父主题,因此require_once() 函数将始终在父主题中查找版本,即使位于子主题的模板中。

结束

相关推荐

Child-theme breaks site

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