我遇到的所有文档都讨论了通过插件重写可插拔功能。
如果您要进行主题开发该怎么办?
我的functions.php需要另一个文件来覆盖get_user_by()
功能,该文件在中定义pluggable.php
。
如果我忽略该if( function_exists() )
呼叫,则会收到“无法重新声明...”错误。
如果包含该if( function exists() )
调用,则不会出错,但是由于存在可插入版本,因此当然会忽略我的函数。
根据Dominic 在WordPress启动命令上的精彩文章,很明显,该pluggable.php
加载是在主题的加载之前进行的functions.php
,依此类推,因此可以解释该错误。
因此,问题是-您如何在主题内利用好用的可插拔体系结构,而无需编写必须与主题捆绑或安装的插件?
进一步说明:因此看来,论点是主题不应该尝试执行插件所做的事情。但是该论点已经有四年多了(根据4位数的追踪数)。考虑到当今主题开发领域的复杂拓扑结构,我很乐意从一些沉重的打击者那里听到这种哲学是否仍然适用。我想相信我们从那以后就已经发展了。
上下文:我正在为客户开发一次性CMS解决方案,其中包含许多自定义元数据,Admin后端的自定义,登录/身份验证过程以及各项工作。当然,这里有设计组件-就是主题部分所在的地方。事实是,这些组件根本不是可重用的组件-它们永远不会应用于其他客户,也永远不会置于GPL之下并开源,它们是大多数当然不会在其他WordPress部署中分发/安装。充其量,我会在将来的项目中利用一些最佳实践,但这绝对是参考/复制粘贴工作。
这听起来不像是我的插件用例。该主题已安装,可能是“二十一”的子主题,也可能是一个独立的主题,它的functions.php调用包含一系列内容,每个都处理所涉及的CMS的不同方面。然后,主题模板文件将使用包含中定义的自定义“模板标签”。我不想让主题文件依赖于某些插件或其他被激活的对象,等等。在系统中增加复杂性只是没有意义。当然,我可以将其放在必须使用的plugins文件夹中,但是仍然感觉像黑客一样-现在,与为此项目进行的自定义相关的所有内容都包含在中wp-content/themes/my-theme/
。我也不想考虑在某些插件文件夹中搜索内容。
不要误会我的意思。我喜欢插件,并且使用它们并编写它们。当插件是第三方并且代表最佳实践时,我确实将插件与这种高度定制的主题开发结合使用,远远超出了我在合理的时间范围内可能会推出的最佳实践。但是,当我需要为一次性场景修改核心功能时,我转向动作挂钩,过滤挂钩,并且我也希望能够依赖于用户和身份验证方面的可插入功能。