WordPress多站点:如何让子站点管理员访问插件页面并管理非网络插件
解决WordPress多站点子站点管理员访问插件页面的问题
核心逻辑
WordPress多站点默认限制子站点管理员访问插件管理功能,我们需要为子站点管理员角色添加特定权限,使其能查看插件列表、激活/禁用非网络级插件,但保留无法安装、删除插件的限制。
具体实现方案
方案1:修改主题functions.php文件
将以下代码添加到你的网络主题(或子站点主题)的functions.php中:
function grant_subsite_admins_plugin_access() { // 获取子站点管理员角色对象 $admin_role = get_role('administrator'); // 添加查看插件页面的权限 $admin_role->add_cap('view_plugins'); // 添加激活、禁用插件的权限(仅对非网络激活插件生效) $admin_role->add_cap('activate_plugins'); $admin_role->add_cap('deactivate_plugins'); } // 在站点初始化时执行权限添加操作 add_action('init', 'grant_subsite_admins_plugin_access');
方案2:创建自定义网络插件(推荐)
为避免主题更新导致代码丢失,建议创建一个网络激活的插件:
- 在
wp-content/plugins/目录下新建文件夹subsite-plugin-permissions - 在该文件夹内创建
subsite-plugin-permissions.php文件,写入以下内容:
<?php /* Plugin Name: 子站点插件管理权限扩展 Description: 允许多站点子站点管理员查看插件页面并管理非网络级插件 Version: 1.0 Network: true */ function grant_subsite_admins_plugin_access() { $admin_role = get_role('administrator'); $admin_role->add_cap('view_plugins'); $admin_role->add_cap('activate_plugins'); $admin_role->add_cap('deactivate_plugins'); } add_action('init', 'grant_subsite_admins_plugin_access');
- 登录网络后台,找到该插件并点击网络激活即可。
关键注意事项
- 不要添加
install_plugins或delete_plugins权限,否则子站点管理员将获得安装、删除插件的权限,违背你的限制需求。 - 网络激活的插件无法被子站点管理员修改,此方案完全符合你保持网络级插件不可变更的要求。
- 若后续角色权限被重置,重新执行上述操作即可(自定义插件方式更稳定)。
内容的提问来源于stack exchange,提问作者hesham shawky
相关产品推荐
相关产品推荐

