【发布时间】:2018-09-14 21:18:35
【问题描述】:
我正在创建一个基于现有父主题的 WordPress 子主题,并且我希望我放在子主题目录中的任何同名文件优先于父主题目录中的文件。我认为这是在 WP 中设置父/子主题的方式,但我遇到了一个问题。
根据WordPress codex on Child Themes,它说:
模板文件
如果你想改变的不仅仅是样式表, 您的子主题可以覆盖父主题中的任何文件:只需 在子主题目录中包含一个同名文件,并且它 将覆盖父主题目录中的等效文件 您的网站正在加载。
在我的一个文件 (header.php) 中,有一个如下所示的包含:
include get_parent_theme_file_path("folder/file.php")
即使我的子主题中有该 file.php 的重复命名但经过修改的版本,它仍然使用我的父主题中的版本。根据相同的 codex,他们针对子主题文件的建议是使用 get_stylesheet_directory(),所以它看起来像这样:
include (get_stylesheet_directory()."/folder/file.php");
我了解名为“get_parent_theme_file_path()”的函数的目的是忽略父/子关系并仅获取父主题版本,因此无需将其替换为在我的子主题中显式获取文件的函数( ie.get_stylesheet_directory),有没有办法让我拥有某种通用的 get_path() 函数,首先检查子级,如果不存在,获取父级版本?
顺便说一句,我读过this Q&A on "get_parent_theme_file_path vs. get_template_directory",但他们的解决方案是使用 parent_theme_file 过滤器,但这不是动态的,并且需要我为我希望它使用的每个子文件编写一个过滤器函数。
感谢您的帮助。
【问题讨论】:
-
所以你现在在你的主题文件夹中有你的父主题文件夹和子主题文件夹,对吧?您的子文件夹是否至少有一个 functions.php 和 style.css 文件?您的 style.css 文件是否有正确的标题注释来引用父主题?
标签: wordpress inheritance parent-child child-theming