问题描述
我一直在为 WordPress 开发插件,我开发的大多数插件都使用两到三个类,因此不如 Buddypress 或 WooCommerce 那么大。
我计划开发两个开源插件来提供某种复杂的系统 (目前不能在开发过程中分享细节,而在开发过程中其他开发人员可以自定义功能),而且系统需要与 Buddypress 和 WooCommerce 。
当我检查这些插件文件,并意识到他们已经注册了自己的操作和过滤器,开发人员可以根据需要进行修改。但是,我的问题是无法完全理解,我应该如何编写一个插件,其他人可以灵活地覆盖函数以及添加自己的插件。
我知道很难给出明确的答案,但我需要一些 start-up 指南,所以我可以走正确的方向。我需要注册自己的操作和过滤器吗?如果是的话?如果不是,我的选择是什么?
你的建议会帮助我很多… 谢谢
最佳解决方案
您在插件或主题中提供的 API 取决于该特定代码的逻辑。可能没有适用于所有情况的指南。
我是使用 API的多个插件的贡献者,到目前为止我学到了什么:
-
在您真正了解用户如何使用您的代码之前,不要提供 API 。发布前两个或三个版本没有任何 API 。没有自定义操作或过滤器,没有公共方法或函数 (从来没有任何全局变量) 。等待用户的请求,但不要添加代码,直到您知道内部代码结构将在长期运行为止。 Maintaining backwards compatibility of an API is hard 。这可能会阻止其他地方的改进。想想 WordPress 今天不能删除的所有全局变量。这是一个糟糕的 API,我们被困了很多年,因为人们 use it already 。
-
考虑将您的 API 与其他代码分开 (见上一个链接) 。您的 API 不仅对第三方开发人员有用,而且对您也是有用的。不要为自己添加限制,如果你不必。
-
吃你自己的狗食。如果您提供自定义挂钩,请在代码中使用它们。这将为其他开发者提供有用的示例,您可以很快看到可能的缺陷。如果 WordPress 核心在内部使用 so-called Settings API,那么今天我们就不会有这个混乱。也许。
-
以身作则。在插件中使用 WordPress 核心 API 的很好的部分。避免使用 anonymous objects,常量,全局变量和任何类型的不可预测的代码。
-
确保您使用一致的命名方案 (而不是 such a mess),并将所有内容放在您自己的命名空间下。
-
先写文档。稍后再发布一个新的 (部分)API 。为所有内容创建有用的示例。你会惊奇地看到你会发现多少孔和冗余。
-
避免回调地狱。提供特定的工具来调试您的 API,因为它们应该不起作用 (包括没有精简的脚本和样式表) 。我已经写了一个如何 debug AJAX 的例子,只是为了说明你可以在这里有多么有创意。在释放这些工具之前,请先在文档中解释这些工具。
-
WordPress 的回调悖论的另一种可能是 Observer pattern 。这将为 third-party 开发人员提供障碍,但可能导致双方更好的代码。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。