我正在开发一个主题,其中包括我作为单独插件开发的一些功能(因为我希望独立发布它们)。

我想将这些插件作为主题核心的一部分,并且我注意到一些开发人员将插件作为文件或子目录与其主题一起包含,但随着时间的推移,这最终可能导致维护同一插件的两个版本 - 一个对于插件存储库,一个用于主题 - 但如果可能的话,我想避免这种情况。

将插件作为主题一部分的最佳实践是什么?

有帮助吗?

解决方案

如果您打算独立发布它们,请独立发布它们并尝试将它们都托管在 WP 存储库中。这将允许您远程更新系统并让人们尽可能使用最新的系统。

然后,在您的主题中,使用 is_plugin_active() 过滤您的命令。如果您有需要插件的主题功能,请使用 is_plugin_active() 在使用该功能或​​催促用户安装插件之间动态切换。

要记住的重要一点是 如果未安装插件,您的主题应该仍然有效。 它不必具有相同的丰富功能集,但如果他们决定删除或停用其他插件之一,它也不应该中断。

或者,如果您知道某个插件在很长一段时间内不会改变(我使用了一些插件 仅有的 添加/删除特定的 WP 过滤器)您可以删除 PHP 文件到一个 /library 包含您的主题的目录和 include() 文件在 functions.php. 。然后默认启用该功能 - 权衡是您现在维护该插件的两个版本(正如您在原始问题中提到的)。

其他提示

基本上您有三种可能的情况:

  • 主题和插件都安装了;
  • 唯一的主题是安装的;
  • 仅安装插件。

考虑到更有可能更新的帐户:

  • 存储库主持的插件 - 可能;
  • 存储库主题 - 可能;
  • 不是存储库主持的主题或插件 - 不太可能;
  • 儿童主题 - 极不可能(不能在存储库中托管,而是手动合并更改,因为它是由最终用户定制的)。

因此,总体而言,最好保持代码相同(相似,如果不完全相同)并在不存在插件时将其加载到主题中。因为现在它是插件既容易,又更加普遍。

显然,主题也必须能够使用捆绑或单独的插件,并且插件完全不取决于主题的代码。

最好的(但复杂的实践)是将扩展名构建为无上下文独立的(又称框架),并使用自定义加载程序检查版本和最新负载。有关框架方法的实际示例,请参见 scbframework 两者都分配为单独的插件,并用于多个其他插件。

许可以下: CC-BY-SA归因
scroll top