与我一起工作的前开发人员过去对子主题进行了自定义,但一些代码被放在functions.php父主题上,然后他将所有代码放回子主题,现在最近的父主题更新销毁了父主题functions.php文件中的所有修改。
他说,仅仅在子主题上覆盖他的自定义是不可能的,因为它们超出了样式。我在wordpress文档上读到,当进行广泛的定制时-超越样式和几个主题文件,创建父主题是比子主题更好的选择,以避免我面临的那种问题。
我的问题是:
答:根据你的经验,子主题有没有可能覆盖父主题的某些功能,如果是这样的话,就没有什么可做的了?
作为另一种选择,一个人可以在父主题上编写代码,并冒着在更新时丢失所有代码的风险。
这是始终有可能覆盖任何功能使用子主题,无论如何广泛的自定义。
感谢您的真知灼见,谢谢!
发布于 2020-06-26 15:51:11
回答你的问题..。
子主题是否可能无法覆盖父主题中的某些功能?
这取决于父主题编码的好坏。基本上,子主题不能覆盖父主题的功能是可能的。这种情况下的最佳实践是,从子主题中的父主题中注销父功能,然后在子主题中的相同钩子上再次注册修改后的功能。
不要这样做。当然,修改父主题也是有可能的。这会导致两个主要问题。每次更新都可能覆盖您所做的更改,具体取决于随更新而更改的文件。如果您不更新父主题以避免覆盖您的更改,您的主题将变得不安全,并且有可能在将来的wordpress软件更新中不起作用。因此,请不要使用父主题代码库。请始终使用子主题。
使用子主题总是可以覆盖任何功能,无论自定义有多广泛。
正如你的第一个问题,这取决于你的父主题的代码质量。WordPress Codex强烈建议在父主题中使用像function_exists和class_exists这样的函数,这样你就可以修改大多数东西。但情况并不总是这样。父主题的大多数功能都与WordPress软件的操作挂钩相关联。您可以使用这些钩子从父主题中取消注册函数,并在子主题中注册您自己修改过的函数。这个问题的答案是:不,并不总是可以覆盖父主题的功能。但在大多数情况下是这样的。取决于父主题的质量。
发布于 2020-06-26 15:52:14
你是对的,只要有可能,子主题和自定义插件是扩展父主题和现有功能的选择。主题和插件文件不应该接触,以防止你现在的情况。如果您谈论的是纯样式,那么child theme应该总是能够覆盖几乎所有方面的父主题。这就是子主题存在的原因。另一方面,我们不会覆盖功能本身,相反,WordPress开发人员使用钩子来添加或修改主题和插件的现有功能。也就是说,需要一个钩子才能“覆盖”某个特定的功能。因此,插件或主题的原始作者可能没有提供这样的扩展钩子。
https://stackoverflow.com/questions/62589923
复制相似问题