想象一个WordPress多站点网络,其中包含插件Foo(但仅在某些站点上处于活动状态)。当将插件Foo从1.0版升级到2.0版时,Foo希望在数据库中做一些工作。(为了进行此练习,我们假设它希望停止在10个不同的wp\\U选项行中存储数据,并将其全部存储在序列化数组中。)
更新Foo时,Foo如何为每个站点运行其Foo\\u db\\u更新脚本?
一个常见的答案是,Foo应该钩住admin\\u init,对照db存储的版本检查Foo的当前版本,并查看是否需要运行此脚本。这里的主要问题是,这不是在多站点环境中可以轻松完成的事情。如果我可以轻松地触发网络中所有站点的admin\\u init事件,并加载每个站点的当前插件,那么这种方法可能会奏效,但我不知道如何做到这一点。
我已经尝试连接到wpmu\\u upgrade\\u站点,并在将Foo更新到2.0版后运行升级网络。然而,这只使用switch\\u to\\u blog作为每个站点,并没有完全加载它切换到的每个站点的插件。这意味着,如果Foo向wpmu\\u upgrade\\u站点添加了一个函数,那么当从网络管理员单击升级网络时,该函数将不会启动。
那么,插件在多站点环境中运行这样一个脚本的最佳方式是什么呢?