有没有更好的方法自定义父模板文件,而不是将其复制到子主题并进行更改?
不是真的。有些主题(如Genesis)是专门为子主题设计的,而不是使用模板来构建页面。如果父主题是这样构建的,则可以使用remove_action()
和add_action()
修改模板。然而,父主题需要专门设计来支持这一点。它不适用于大多数主题,此技术的任何实现都将特定于父主题。
我所能建议的就是查阅有关父主题的任何文档,看看它们是否支持子主题的任何替代方法。
这实际上是一个结构不良的主题的问题吗?也就是说,主题编写者是否应该在父主题中保留函数定义,同时考虑到可能使用的子主题?
当开发人员创建主题时,他们也在为子主题开发人员创建API,无论他们是否愿意。API需要稳定。出于同样的原因,WordPress不能在没有某种回退以防止错误的情况下删除函数,主题开发人员不应该在不考虑子主题开发人员的情况下更新其主题。因此,是的,我认为主题开发人员应该保留函数定义。
问题是没有办法强制执行这一点。然而,你可以做一些事情来避免将来发生这种情况。
使用子主题时,在未查看变更日志或变更本身的潜在问题之前,不要更新父主题防御性编码。例如,每当您使用来自第三方插件或父主题的函数时,请选中function_exists()
第一如果父主题删除了一个函数,那么输出将消失,但至少没有致命错误