Template hierarchy override

时间:2017-12-08 作者:maverick

覆盖默认模板层次结构的最佳方法之一是使用子主题,复制并粘贴要覆盖的模板文件(从父主题到子主题),并根据需要更改模板文件的代码(以在模板页面上显示内容)。另一种方法是使用过滤器(add_filter( \'template_include\' , \'custom_template\' , priority_value );) 绕过模板层次结构的预定义结构。

有谁能详细解释第二种方法是如何工作的?

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

要了解其工作原理,请查看源文件template-loader.php. 这里您可以看到几行语句,它们决定WordPress将加载哪个模板。靠近末尾的是过滤器,它允许您撤消前面的所有行。

例如,其中一行确定要加载哪个模板,如果is_single 是真的。您可以使用过滤器添加额外的条件,例如,如果is_single 是真的,并且该帖子属于某个类别。注意,这仍然意味着您需要在子主题中有一个模板文件(其中还包含过滤器fucntions.php).

基本上,对于WordPress可以通过模板层次结构的常规命名找到的所有模板,使用过滤器是没有意义的。只有在必须调用模板的非常特定的条件下才能使用它。

结束

相关推荐