搜索全站
数据库 6 分钟阅读

多站点插件网络启用与单站启用的区别:什么时候该选哪种

同一个插件在多站点里可以"网络启用"也可以各子站单独启用,两者的数据存储位置、生效范围、管理能力完全不同。本文讲清存储差异(wp_options vs wp_2_options)、选择判断标准、mu-plugins 的第三种形态,以及网络启用后子站配置冲突的处理方法。

U
UFO_PF 2025-05-31 · 阅读 6 分钟
多站 数据库
阅读提示
本文约 2,015 字,预计阅读 6 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:同一个插件,两种装法,行为完全不同

在多站点里,你可能会发现一个怪现象:插件在网络后台启用了,子站管理员却在插件列表里看不到它;或者插件在 A 子站启用了,B 子站又能单独启用一次,两边的设置互不相干。

这不是 bug,而是多站点的设计:网络启用是”全局生效”,单站启用是”局部生效”,数据存在不同的地方。

原理分析:数据存在哪儿

启用方式 设置存储位置 生效范围 子站能否停用
网络启用 主站 wp_options 所有子站 不能
单站启用 子站 wp_2_options 仅本站 能
mu-plugins 无设置界面(代码控制) 所有子站 不能,且后台不可见

这就解释了一个常见困惑:子站管理员进入了 SEO 插件的设置页,改完保存,结果配置写到了主站 wp_options,所有子站都跟着变。

反过来,如果插件被网络启用,但某个子站之前已经单站启用过,可能出现两套配置并存,行为取决于插件实现(多数以网络级为准)。

保姆级实操:判断标准与操作

判断标准一:是否需要统一配置?

  • 是(缓存、安全、SMTP、SEO 基础设置)→ 网络启用;
  • 否(表单、展示类、各站需求不同)→ 允许单站启用。

判断标准二:插件是否支持多站点?

查插件详情页的 “Compatible with WordPress Multisite” 或看插件是否有网络设置页。不支持多站点的插件被网络启用后,可能在子站后台报错或行为异常。

判断标准三:是否需要子站管理员自助?

如果子站有独立运营者,允许单站启用能减少你的工单量,代价是需要管控插件质量。

操作:网络启用

wp plugin install redis-cache --network-activate
# 或
wp plugin activate redis-cache --network

后台路径:网络管理 → 插件 → 网络启用。

操作:允许子站自行启用

网络管理 → 设置 → 勾选”插件”菜单(启用插件管理菜单给站点管理员)。之后子站后台才会出现”插件”菜单。

操作:子站单独启用

wp --url=shanghai.mimangfei.com plugin activate contact-form-7

操作:查看启用状态

wp plugin list --fields=name,status
wp --url=shanghai.mimangfei.com plugin list --fields=name,status

status 字段里 active-network 表示网络启用,active 表示单站启用。

第三种形态:mu-plugins

wp-content/mu-plugins/ 下的 PHP 文件会被自动加载,对所有站点强制生效,后台完全不可见也不可停用。

mkdir -p wp-content/mu-plugins
cat > wp-content/mu-plugins/force-settings.php <<'PHP'
<?php
// 强制所有站点禁用 XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
PHP

注意:mu-plugins 只加载根目录下的 .php,子目录里的文件不会被自动加载,需要自己在入口文件里 require。

常见踩坑与失败案例

  1. 网络启用后子站设置改不动 —— 插件设置存在主站,子站点保存后跳转主站。这是预期行为,向子站管理员说明即可。
  2. 案例:某网络把缓存插件网络启用,各子站管理员都去改缓存规则,结果互相覆盖,最后谁的都配不对。解决方式是在网络级统一配好,然后在子站后台隐藏该插件菜单(用 Adminimize 或自定义代码移除菜单)。
  3. 同一插件既网络启用又单站启用 —— 可能出现重复加载资源(CSS/JS 加载两次)。排查方式是看页面源码有没有重复句柄。
  4. --network 参数漏写 —— wp plugin activate xxx 只在主站启用,子站不会生效。
  5. mu-plugins 更新 —— 只能通过文件系统更新,后台没有更新提示,容易忘记维护。
  6. 插件激活钩子不触发 —— 网络启用时,插件的 register_activation_hook 只在主站执行一次,子站的初始化逻辑需要在代码里自行处理(如遍历 wp site list)。

总结

选择启用方式的核心依据是”配置要不要统一”。基础设施类网络启用并锁定,业务类放开给子站是通用做法。另外,需要”强制生效且不允许改动”的代码,放 mu-plugins 是最干净的方案——它不会出现在任何后台界面,也不需要担心被停用。最后提醒一句:网络启用前一定先在测试子站验证兼容性,多站点下插件出错的影响面是全局的。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。