我对设计和编码Wordpress主题还不陌生, 并且最近开始在Wordpress免费提供的悉尼主题的基础上创建了一个子主题。我遇到了无法解决的问题。
有一个通过父级的functions.php调用的PHP文件, 我需要对其进行自定义, 并且在更新父级主题时必须保持不变。该文件称为template-tags.php, 位于” inc”文件夹中。现在, 据推测, 根据Wordpress Codex(我在这里询问之前已经咨询过), 子主题上的任何重复文件(functions.php除外)都将自动覆盖父主题中的文件。我不知道这对于文件夹内的文件是否也适用, 但是我认为在父文件的functions.php中调用此特定文件的事实使它成为要加载的父文件。我之所以这样假设, 是因为为了获得自己的自定义版本, 必须在子主题中加入的样式CSS和JS脚本文件也是如此。
但是, WordPress Codex中没有任何内容可以解释如何覆盖父级function.php中已被调用的文件。而且我在其他任何地方都找不到(甚至在这些问题中也找不到):WordPress子主题覆盖父主题, 包括, 用WordPress中的Child主题覆盖父主题函数, 如何从非函数中覆盖不可插入的父主题函数。 php文件?, WordPress子主题-functions.php复制-无法”重新声明”), 这对我有特别的帮助。
因此, 总结一下:
父主题有一个” inc”文件夹, 其中包含文件template-tags.php。
我的孩子主题还有一个” inc”文件夹, 其中包含文件template-tags.php。
父主题的functions.php具有以下代码来调用其文件:
require get_template_directory() . '/inc/template-tags.php';
我尝试在孩子的functions.php文件中添加任何调用其template-tags.php文件的操作都会导致错误, 因为显然WP不可能两次要求相同的操作。
缺少注释掉parents的functions.php中的调用, 在我看来这不是一个实用的解决方案, 但是更多的替代方法, 我不知道还有什么可做。
我希望能在这个时候提出任何建议。提前致谢!
#1
你好@ QuestionerNo27,
自你问这个问题以来已经有很长时间了, 但由于遇到了同样的问题, 我也一直在寻找答案2天。答案很简单, 例如”嗨”:
- 你不需要在子主题中使用inc文件夹, 也不需要template-tags.php文件。
- 你只需要从父模板tags.php复制要覆盖的函数并将其粘贴到子主题functions.php中, 我想从父模板tag覆盖mytheme_posted_on()函数。 .php
现在正在工作。感谢https://wordpress.org/support/topic/inc-folder-in-child-theme(Stephencottontail答案)
#2
我有一个类似的问题, 我想在template-tags.php的子主题中更改标题的布局。
对我有用的解决方案是在子主题的我的functions.php文件中使用以下行:require get_stylesheet_directory()。 ‘/inc/template-tags.php’;
我在function.php中使用了来自Parent的原始行:require get_template_directory()。 ‘/inc/template-tags.php’;
使用函数get_template_directory()无效, 因为此函数将始终返回父主题目录。
使用函数get_stylesheet_directory()起作用是因为它检索了子主题目录。
是的, 我知道函数” get_stylesheet_directory()”的名称不是很直观, 但实际上它将返回”子主题”目录的位置。
通过在线搜索花了一些时间才能解决。我在网上找到了此参考资料, 这对我的搜索有所帮助:在functions.php中需要父文件时, 如何在子Wordpress主题中覆盖父文件。
评论前必须登录!
注册