移除「我的站点」菜单 | 多站点下的权限精简优化

VFX大学 wordpress开发 移除「我的站点」菜单 | 多站点下的权限精简优化

正在查看 0 条回复
  • 作者
    帖子
    • #196

      追光
      管理员

      在 WordPress 多站点(Multisite)环境中,用户(特别是作者或编辑)登录后通常会在顶部工具栏(Admin Bar)看到一个 “我的站点”(my-sites)的下拉菜单,列出自己可访问的所有站点。这在站点数量较多或子站点结构较复杂的系统中,容易造成界面混乱、误操作,甚至信息泄露。

      在 NewVFX 或类似平台的架构中,我们往往希望:
      只保留总管理员(Super Admin)对全站的统一管理视图;
      让普通用户专注于当前站点,避免进入不必要的子站点;
      在前后端统一移除多站点相关菜单,确保体验一致性。

      ✅ 代码作用解析

      
      // 后台移除“我的站点”
      add_action('admin_init', function () {
          if (!current_user_can('manage_network')) {
              add_filter('wp_before_admin_bar_render', function () {
                  global $wp_admin_bar;
                  $wp_admin_bar->remove_menu('my-sites');
              });
          }
      });
      

      🔹 触发时机:在后台加载阶段(admininit)。

      🔹 作用对象:非网络管理员(!currentusercan(\’managenetwork\’))。

      🔹 操作内容:从后台顶部工具栏移除「我的站点」菜单(my-sites)。

      
      // 前台也移除“我的站点”
      add_action('wp_before_admin_bar_render', function () {
          if (!current_user_can('manage_network')) {
              global $wp_admin_bar;
              $wp_admin_bar->remove_menu('my-sites');
          }
      });
      

      🔹 触发时机:前端页面加载时。

      🔹 作用对象:同样只针对非总管理员用户。

      🔹 操作内容:在前台隐藏「我的站点」下拉列表,保持与后台一致的权限展示。

      🎯 实际意义与好处

      项目效果
      🧼 界面清爽普通用户不再看到与自己无关的站点信息
      🔒 安全性提升减少误点击进入其他子站点的风险,避免访问路径暴露
      📐 权限隔离体现出角色的功能边界,提升系统控制感
      🎯 一致性体验前后台行为一致,用户体验更统一

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。