了解WordPress多站点中的状态

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

这是我的挑战。我在网络级别安装了一个插件。其目的是根据网络上特定站点的角色变化,在网络中添加用户和角色。由于角色仅在站点级别进行管理,因此该插件会根据业务目标的需要将用户和角色添加到其他站点。我刚刚完成这个插件,它工作得非常好。

然而,在一个站点(站点A)上,还有其他具有特定功能的插件,我希望在该站点(站点A)上创建新用户角色时自动执行这些插件。挑战在于,当在其他站点(站点B)或网络级别启动操作时,站点特定功能(站点a)未注册。

我想知道当一个新用户在站点B上注册时,如何在站点a上调用一个函数。似乎我需要让站点a启动以识别仅在站点a上注册的插件及其函数。

我知道这是WordPress的一个比较模糊的功能,有没有关于如何实现这一点的想法?

另请参见:Multisite functions to communicate with individual site functions

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

而不是依赖switch_to_blog 或者从根博客/其他地方访问站点,请考虑改用队列/作业系统。这样,您就不会根据PHP在时间执行限制之前可以通过的站点数量来限制您可以拥有的最大站点数量。

为了做到这一点,您需要一种方法来存储要完成的作业的详细信息(将角色X分配给用户Y),以及一个定期运行的cron作业,可以获取它。

这样,cron作业在站点上下文中运行,而不是在根博客中运行,允许您使用插件可以连接到的特定于该站点的过滤器。

我建议使用自定义帖子类型来存储作业条目,在cron作业完成工作时删除帖子。如果您将职位类型声明为\'public\' => false 但还是要给它一个UI

结束