插件干扰中通过Composer自动加载

时间:2020-01-15 作者:Carol.Kar

我正在使用wordpress 5.3。x、 我正在使用"fabpot/goutte": "^4.0" 在我的wordpress插件之一的composer中。在我的主题中,我使用"fabpot/goutte": "^3.8". 两者都在使用require_once \'vendor/autoload.php\'; 自动加载composer 定义的库。

我的插件似乎使用的是"fabpot/goutte": "^3.8", 而不是我的插件目录中的版本。原因可能是我的主题先被加载,然后我的插件由wordpress加载。

我想独立创建插件。如何解决此干扰?

感谢您的回复!

1 个回复
SO网友:kraftner

你对这个问题的分析完全正确。通过在主题和插件中使用单独的自动加载程序,您将遇到冲突,并且只加载第一个自动加载程序。

没有简单而通用的解决方案,但如果您控制整个堆栈,最好的解决方案可能是将整个站点(包括WP)置于composer管理之下,并将插件和主题定义为依赖项。然后,Composer可以查找满足所有要求的版本,或者在存在无法解决的冲突时向您发出错误警告。

您不能同时运行多个版本。

如果您想更深入地了解这一问题,本文将提供一个很好的概述:https://inpsyde.com/en/package-management-in-wordpress-introduction-solutions

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。