问题描述
我在想,如果我将一个插件从 WPMU 移植到 WP,反之亦然,我可能会遇到什么样的问题。
说我从头开发了一个插件,并希望这个插件与两者兼容,我应该从 WPMU 或 WP 开始吗?
最佳解决方案
您需要在两个设置中进行测试,因为它们在许多情况下的行为不同。一些最显著的区别是:
-
如果注册激活回调,则需要检查激活是否为 network-wide 。如果是,run the activation logic for all the blogs 而不是当前的。
-
如果插件是 network-activated,则添加新博客时,常规激活回调将不会触发,因此您需要创建一个挂钩到
wpmu_new_blog
操作的额外回调。它必须切换到新博客,执行激活逻辑,然后恢复当前博客。新博客的$id
作为第一个参数传递给处理程序。 -
如果您要创建自定义帖子类型,并希望显示 「设置精选图像」 元框,则需要确保 「媒体上传按钮」 设置已启用 「图像」 复选框。您可以使用
get_site_option( 'mu_media_buttons' )
进行检查,并使用update_site_option()
进行设置。 -
上传目录的路径是不同的,但只要您始终使用 wp_upload_dir()而不是常量,您将会很好。
-
每个博客都有大部分数据库表的自己的副本,它们以博客 ID 为前缀。您通常不需要做任何特殊的操作,只要您使用 API与数据库进行交互即可。
-
用户和 usermeta 表是例外; 它们在所有博客中共享。
如果您需要使用 API函数临时访问另一个博客的数据,然后 restore_current_blog()切换回来,您可以使用 switch_to_blog()。
您可以通过浏览 my plugin skeleton 的源来查看激活功能的完整示例。
次佳解决方案
没有区别。
WordPress MU is no longer a separate project; it is continuing development as part of the main WordPress branch under the name multisite or MS.
在开发使用 multi-site 安装时,由于有时文件处理和路径有点棘手。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。