这完全取决于父主题。而WordPress将检查子主题中的模板Template Hierarchy 如果它们存在的话,就使用它们,这取决于主题作者决定他们希望为这个层次结构之外的任何其他文件支持多少子主题覆盖。
例如,当包含模板部分时,主题作者可以使用:
require \'partials/partial.php\';
这很好,但如果主题作者想要支持儿童主题,他们会使用:
get_template_part( \'partials/partial\' );
这是因为
get_template_part()
将检查子主题
partials/partial.php
如果存在,请使用它,否则它将返回到父主题的副本
partials/partial.php
.
自4.7.0以来,WordPress添加了几个功能,允许主题作者支持其他文件的子主题。
get_theme_file_uri()
将返回子主题中文件的URL(如果存在),否则将使用父主题。这允许主题支持替换子主题中的CSS和JS文件。
例如,如果父主题将样式表排入以下队列:
wp_enqueue_style( \'custom-style\', get_theme_file_uri( \'assets/custom.css\' ) );
然后,子主题作者可以通过放置
assets/custom.css
在他们的儿童主题中。
get_theme_file_path()
将返回子主题中文件的路径(如果存在),否则将使用父主题。父主题可以使用它来允许子主题替换包含的整个PHP文件。
例如,如果父主题包含如下PHP文件:
include get_theme_file_path( \'inc/template-tags.php\' );
然后子主题作者可以替换
template-tags.php
只需放置
inc/template-tags.php
在他们的儿童主题中。
因此,这里的要点是WordPress确实支持子主题替换父主题中的任意文件,但父主题作者需要通过使用正确的函数来明确支持它。
Uncode是一个付费主题,所以我看不到代码,但我怀疑它没有使用get_template_part()
, 这就是为什么不能替换子主题中的文件。付费主题通常不是很好的“WordPress公民”,对此类功能的支持也不尽相同。