多站点功能与单个站点功能进行通信

时间:2018-03-06 作者:Brent

我有一个在网络级别运行的多站点插件。它的工作是在网络上为不同的站点分配额外的角色。例如,我有三个网站。

用户可以注册图书馆或课程。当创建一个新的用户帐户时,我创建了一个插件,为网络上的其他站点分配额外的角色。

例如:一个新用户注册了库,为CRM站点设置了一个新角色。-或者-当新用户注册课程时,将为CRM和库设置新角色。

这后面的例子就是我面临的挑战。我的插件在网络层面起作用(Network:True 在插件元中)。

现在这里是有趣的地方。在库站点上,访问由添加用户元值的成员插件控制。对库的访问不受用户角色或功能的控制,它是在该站点的用户元中专门定义的。

会员插件及其用户元信息仅限于该网站。(当然,所有这些都可以通过数据库访问,但我将在下面讨论这种方法的缺点。)现在有了一个API和与此成员资格插件相关的RESTful API调用。我试图从我的网络插件中调用它们,但使用wordpress wp\\u remote\\u get函数没有任何成功。特定于插件的API函数在网络级别上是不存在的,REST API调用会创建无限循环。我甚至试过switch_to_blog() 功能,以查看这是否会使其看起来像在该站点上一样。没有什么

因此,我的下一次尝试是尝试在图书馆网站上设置一个辅助插件,以便在网络插件创建新用户时进行监听。我已经尝试访问所有三个可用的动作挂钩user_register, profile_update, 甚至add_user_to_blog, 但是特定于站点的插件在网络级插件执行其任务时甚至不会退缩。这就好像他们在两个不同的领域。因此,尽管理论上我应该通过在特定的库站点上安装插件来访问我需要的所有成员API功能,但我无法让它确认何时从网络级插件为该特定站点添加了新用户。

我的下一个行动计划是尝试创建Cron作业来定期检查添加到站点的新用户,或者直接入侵数据库,我不想执行直接数据库路由的原因是,我绕过了插件API的所有内置功能。我更愿意使用插件的功能和特性。

谢谢

1 个回复
最合适的回答,由SO网友:Brent 整理而成

此从未实现的功能请求似乎解决了我的问题:dynamic unloading and loading of plugins

因此,现在我已经确定我无法访问网络中其他站点的插件功能,我可以通过网络访问插件。

结束