【发布时间】:2015-12-09 20:10:12
【问题描述】:
我对 Wordpress 主题的设计和编码还比较陌生,并且最近开始了一个基于悉尼主题的子主题,该主题在 Wordpress 中免费提供。我遇到了一个我无法锻炼的障碍。
有一个 PHP 文件通过父级的 functions.php 调用,我需要对其进行自定义,并且在更新父主题时需要保持不变。该文件名为template-tags.php,位于“inc”文件夹中。现在,据推测,根据 Wordpress codex(我在询问之前已经咨询过),子主题上的任何重复文件(functions.php 除外)将自动覆盖父主题中的文件。我不知道这是否适用于文件夹内的文件,但我认为这个特定文件在父级的functions.php 中被调用这一事实使得它是正在加载的父级文件。我假设这是因为样式 CSS 和 JS 脚本文件也是如此,为了获得我自己的自定义版本,我必须在子主题中排队。
但是,Wordpress 代码库中没有任何内容解释如何覆盖已在父 functions.php 中调用的文件。而且我在其他任何地方都找不到任何对我有特别帮助的东西(即使是在这些问题中:WordPress child theme override a parent theme include、Overiding parent theme functions with a Child theme in WordPress、How to override a not plugable parent theme function from a non function.php file?、Wordpress child theme - functions.php copy - cannot "redeclare")。
所以,总结一下:
- 父主题有一个“inc”文件夹,其中包含文件
template-tags.php。 - 我的子主题还有一个“inc”文件夹,其中包含文件
template-tags.php。 -
父主题的
functions.php具有以下调用其文件的代码:require get_template_directory() . '/inc/template-tags.php'; 我尝试在我孩子的
functions.php文件中添加的任何调用其template-tags.php文件的内容都会导致错误,因为显然 WP 不能要求相同的东西两次。
没有在父母的functions.php 中注释掉电话,在我看来这不是一个实际的解决方案,但更多的是一种解决方法,我不知道还能做什么。
目前我将不胜感激。提前致谢!
【问题讨论】:
-
允许子主题文件覆盖父模板的良好做法。但是,如果开发人员使用了 require 你不能将自己的文件滑入其中,无论如何这听起来像是一页函数。您可能会看到要覆盖的函数挂钩的位置,然后您可以取消挂钩并挂钩自己的。
-
嗨,大卫,感谢您的回答。如果我对您的理解正确,您建议将我的自定义文件链接到父文件所链接的位置。如果是这样,我也可以在父文件中删除该链接,而我孩子的 functions.php 中的链接将是唯一的链接。但是我必须牢记这一点,每次主题升级时都要进去做。似乎这个经常发生。我从上周中旬开始,今天已经升级了; 15 号,因为它是在 1.15 版上。我宁愿避免不得不总是这样做。谢谢!
-
没有即时说明它的方式 :) 但可能的是单独查看每个函数并在可能的情况下将它们解开,例如,如果一个函数与 init 挂钩,解开它并钩住你自己。但从文件名来看,模板标签——这些是在模板中使用的吗?您可以使用自己的标签等创建自己的模板...
标签: php wordpress wordpress-theming parent-child require