felixarntz/wp-network-roles

实现了WordPress网络范围内的用户角色。

安装: 54

依赖项: 0

建议者: 0

安全: 0

星星: 9

关注者: 4

分支: 1

开放问题: 1

类型:wordpress-plugin

1.0.0-beta.1 2018-02-21 18:43 UTC

This package is auto-updated.

Last update: 2024-09-06 09:09:05 UTC


README

Build Status Latest Stable Version License

WP Network Roles

实现了WordPress网络范围内的用户角色。

功能

  • 引入了 WP_Network_RoleWP_Network_Roles 类,用于管理网络范围内的角色
  • 引入了内部类 WPNR_User_With_Network_Roles,用于存储用户的网络角色和能力
  • 引入了用户和网络之间的关系
  • 允许查询具有特定网络角色或是否属于网络的用户
  • 使用用户元数据来存储网络范围内的角色和能力,类似于WordPress核心存储站点角色和能力的方式
  • 引入了两个初始网络角色 "管理员"(类似于网络的超级管理员)和 "成员"(无能力,只是网络成员)
  • 同步和迁移超级管理员到网络角色 "管理员"
  • 通过分配 "成员" 网络角色将网络关系添加到现有用户
  • 包含 wp network-rolewp network-cap 命令,用于WP-CLI
  • 支持WP Multi Network插件

如何安装

该插件可以作为网络范围内的常规插件安装,或者作为必选插件安装。

建议

  • 不要设置以下任何全局变量
    • $super_admins(WordPress核心)
    • $wp_user_roles(WordPress核心)
    • $wp_network_roles
    • $wp_network_user_roles
  • 不要依赖于 is_super_admin(),而是实际的能力
  • 虽然为插件函数和类添加前缀是最佳实践,但此插件是WordPress核心的证明概念,其中一些函数最终可能会出现在那里。此插件只为特定于插件的函数和类、自身内部辅助函数或钩子添加前缀。未添加前缀的函数和类被包装在条件中,以便如果WordPress核心采用它们,将加载其核心变体。因此,不要定义以下任何函数或类
    • wp_network_roles()
    • get_network_role()
    • add_network_role()
    • remove_network_role()
    • get_networks_of_user()
    • count_network_users()
    • wp_get_users_with_no_network_role()
    • WP_Network_Role
    • WP_Network_Roles

用法

管理网络角色

  • 函数:wp_network_roles(): WP_Network_Roles
  • 函数:get_network_role( string $role ): WP_Network_Role|null
  • 函数:add_network_role( string $role, string $display_name, array $capabilities )
  • 函数:remove_network_role( string $role )

管理用户网络角色

  • 函数:nr_get_user_with_network_roles( WP_User $user ): WPNR_User_With_Network_Roles -- 由于在插件中无法可靠地扩展 WP_User 类,必须使用此函数来检索一个特殊类的实例来管理传入的用户对象的网络角色。该实例将内部缓存在原始 WP_User 实例中。
  • 方法:WPNR_User_With_Network_Roles::add_network_role( string $role )
  • 方法:WPNR_User_With_Network_Roles::remove_network_role( string $role )
  • 方法:WPNR_User_With_Network_Roles::set_network_role( string $role )
  • 方法:WPNR_User_With_Network_Roles::for_network( int $network_id ) -- 为特定网络初始化实例。
  • 方法:WPNR_User_With_Network_Roles::get_network_id() -- 获取当前初始化的实例的网络ID。

钩子

  • 动作:wp_network_roles_init
  • 动作:add_network_user_role
  • 动作:remove_network_user_role
  • 动作:set_network_user_role
  • 过滤器:network_role_has_cap
  • 过滤器:pre_get_networks_of_user
  • 过滤器: get_networks_of_user