User Teams
On a large multisite network, granting a group of people the same role across many sites usually means adding each user to each site by hand — and remembering to remove them everywhere when they leave. User Teams turns that into: Create a team, pick a role. Add the user to the team. They have that r
On a large multisite network, granting a group of people the same role across many sites usually means adding each user to each site by hand — and remembering to remove them everywhere when they leave. User Teams turns that into:
- 01Create a team, pick a role.
- 02Add the user to the team.
- 03They have that role everywhere the team applies.
- 04Remove them from the team → access is gone everywhere.
User Teams is multisite-only by design — on a single-site install, native WordPress roles and capabilities already cover the whole feature set, so WordPress won’t offer it for activation there.
Features
- Teams with roles. Each team carries a WordPress role (editor, administrator, a custom role, or none).
- Runtime capability grants. Team access is added via the user_has_cap filter, so removing a user from a team drops their access on the next request — no stale capabilities usermeta to clean up.
- Multisite-native. Team definitions are real wp_users rows (“team accounts”), so WP_Users_List_Table , is_user_member_of_blog() , and every column-adding plugin “just work”.
- Site scoping. A team can apply network-wide (including sites added later) or to a specific list of sites, each with its own role.
- Admin UI. Network Admin → Users → Teams. Per-user checkboxes on the Edit User screen. Team rows with “— Team” markers on the Users list table.
- Cleans up after itself. Deleting a team removes its memberships. Deleting a user drops their memberships. Deleting a site removes its grants from any team that targeted it.
How access is granted
Team-derived capabilities are merged in at runtime, never written into the member user’s own meta:
- user_has_cap — adds the team role’s capabilities to the user’s effective caps, plus role-{slug} for plugins that check by role.
- get_blogs_of_user — adds team-linked sites to the user’s “My Sites” navigation.