Do all files in child theme override the parent?

时间:2011-06-06 作者:emaynard

我很好奇,除了函数之外,是否还有其他PHP代码文件。php、WP模板文件和样式。子主题中的css实际上会覆盖父主题中的同一文件吗?

我正在使用一个具有子主题支持的主题的客户端,但是,对于我希望覆盖的函数,没有要卸载的挂钩或操作。正在寻找一种干净的方法来执行此覆盖,其中包含在升级时不会重写的自定义代码。

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

这完全取决于a)您所谈论的函数和模板文件,以及b)如何在父主题中定义这些函数或调用模板文件。

如果父主题使用get_template_part(), 那你就是金色的。如果父主题使用get_stylesheet_directory_uri()STYLESHEETPATH, 然后您可以覆盖,并提供警告。如果父主题使用get_template_directory_uri()TEMPLATEPATH, 那你的日子就不好过了。

对于函数,如果父主题将函数包装为function_exists() 条件,则可以通过在子主题中声明这些函数来覆盖这些函数。使用挂钩,您可以remove_actionremove_filter.

SO网友:kaiser

通常,所有文件都可以“重写”(but not the functions.php file). 规则是:首先加载子主题,然后加载父主题。

如果要重写函数中的函数。php文件,则应将其包装在

if ( ! function_exists(\'some_function_name\') ) { 
    function some_function_name() { /* do stuff */ }
}
否则,这是不可能的。

结束

相关推荐