问题描述

我在想,如果我将一个插件从 WPMU 移植到 WP,反之亦然,我可能会遇到什么样的问题。

说我从头开发了一个插件,并希望这个插件与两者兼容,我应该从 WPMU 或 WP 开始吗?

最佳解决方案

您需要在两个设置中进行测试,因为它们在许多情况下的行为不同。一些最显著的区别是:

  1. 如果注册激活回调,则需要检查激活是否为 network-wide 。如果是,run the activation logic for all the blogs 而不是当前的。

  2. 如果插件是 network-activated,则添加新博客时,常规激活回调将不会触发,因此您需要创建一个挂钩到 wpmu_new_blog 操作的额外回调。它必须切换到新博客,执行激活逻辑,然后恢复当前博客。新博客的 $id 作为第一个参数传递给处理程序。

  3. 如果您要创建自定义帖子类型,并希望显示 「设置精选图像」 元框,则需要确保 「媒体上传按钮」 设置已启用 「图像」 复选框。您可以使用 get_site_option( 'mu_media_buttons' )进行检查,并使用 update_site_option()进行设置。

  4. 上传目录的路径是不同的,但只要您始终使用 wp_upload_dir()而不是常量,您将会很好。

  5. 每个博客都有大部分数据库表的自己的副本,它们以博客 ID 为前缀。您通常不需要做任何特殊的操作,只要您使用 API​​与数据库进行交互即可。

  6. 用户和 usermeta 表是例外; 它们在所有博客中共享。

  7. 最近有几个 WP-Cron 错误 [12] 仅影响 MultiSite 安装的工作。

如果您需要使用 API​​函数临时访问另一个博客的数据,然后 restore_current_blog()切换回来,您可以使用 switch_to_blog()

您可以通过浏览 my plugin skeleton 的源来查看激活功能的完整示例。

次佳解决方案

没有区别。

来自 http://mu.wordpress.org/

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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。