本周,我正在为客户定制一个现有的主题。为了防止每次更新都覆盖主题,我创建了一个子主题。这使我能够对处理模板的大多数文件进行自定义。加载其他样式表和js库的函数是可插入的,可以被覆盖。
我面临的最大问题是覆盖主题的一些核心功能。这些是不可插入的(没有使用if(!function\\u exsisits())语句),也没有使用挂钩或筛选器。从子主题函数调用相同的核心函数。php或自定义插件引发了致命错误(无法重新声明函数)。
最合适的回答,由SO网友:SdeWijs 整理而成
我对这个问题的解决方案是创建一个自定义插件,其中包含需要覆盖的核心函数的副本。我为这些函数指定了自定义名称,以便可以从子主题目录中的模板文件中调用它们。现在,我可以添加自己的代码和修改,并保留核心主题函数不变的文件。
这会产生一些冗余代码,但现在我可以使用子主题并“覆盖”核心主题函数,直到主题作者使原始核心函数可插入为止。