问题描述

作为 WordPress 管理员新手,我刚刚通过我的第一个 non-automatic WordPress 升级。

我将五种不同的 WordPress 安装从 4.1.3 升级到 4.2 。

它们都是指托管在同一个主机上的不同网站,一个主域和四个插件域。

在每个网站上,我使用以下 plug-ins:

  • Akismet 在;

  • Yoast 的 Google Analytics(分析)

  • Google Adsense

  • Google XML Sitemaps 和

  • Jetpack 由 WordPress.com 。

为了简化进一步管理,我考虑将所有五个安装整合到单个多站点安装中。

到目前为止,我发现很难找到关于这些插件与插件的网站上的多站点安装的兼容性的确切答案。

插件的页面是搜索这个的正确的地方吗?

是否有中央位置可以找到这些信息?

最佳解决方案

有两种类型的多站点兼容性:

  1. 被动兼容性:不做任何具体的细节,只是工作而不破坏任何东西。

  2. 活动兼容性:更改或扩展多站点特定行为。

我想你出来了 1. 见我的 slides from WordCamp Prague 2015 第二部分。

没有关于多站点的任何内容的插件不应该被激活为网络插件。例如,WooCommerce 在安装过程中创建一些自定义表。如果你激活它,network-wide,子区别没有得到这些表,天空将落在你的头上。

不幸的是,大多数插件不检查它们的激活类型,所以他们让你做错了激活。

相关的是 UX 问题,如管理员指针或特殊的”About” 页面,您必须在 non-compatible 插件的子站点点击。 Yoast』s WP SEO is one example 。这个插件很快就会被修复,我猜。 🙂

其他问题取决于您对该多站点的操作。如果您正在建立一个多语言网站,其中每个网站都使用一种语言编写,并且这些网站彼此连接,则您要在撰写内容时同步该帖子。这意味着您可以在挂钩 save_post 上调用 switch_to_blog(),并保存连接的帖子。 save_post 在一个请求中将被多次调用。许多插件不知道这样的情况,所以他们只是覆盖连接的帖子的后期元信息,认为他们仍然是第一个帖子。

注意处理后期元数据的插件,并且缺少这样的支票:

if ( is_multisite() && ms_is_switched() )
    return FALSE;

这些插件不兼容。

类似的,虽然很难指定,但是当插件触摸用户元字段或重写规则时是一个问题。

一些插件尝试将文件内容写入文件,而不会在文件名中包含站点 ID 。他们也很可能被打破了。

像汤姆说的:创建一个测试安装,运行你可以想象的每一个用例。你不能信任插件页面,通常还没有足够的信息。

次佳解决方案

除非插件声明它是兼容的,唯一可靠的方法是创建本地多站点安装并进行测试。

有时你可以找到迹象,但这些都是坏的代码的症状,例如硬编码数据库表名,而不是使用 $wpdb 中的前缀,在这种情况下,即使不使用多站点,我建议您避免插入插件

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。