Implementierung der Rollen- und Berechtigungskontrolle in WordPress
1. Konfiguration der WordPress-Systemrollen und -Berechtigungen. Diese Konfiguration wird in der Tabelle wp_options gespeichert. Du kannst bekommen […]
一、wordpress系统角色和权限的配置
这个配置存储在wp_options表的中。
通过以下方式可以获取到:
$roles= new WP_Roles();
或者
get_option(wp_user_roles);
二、role和cap
role是角色,cap是能力。
一个角色有多项能力。当一个用户成为这个角色,便会将角色和相应的能力的配置写到这个用户的meta数据中(wp_usermetas表)。
User对象中会有相关数据。
用$user->roles可以取到相关角色数据。
用$user->allcaps可以取到相关能力。
三、三个函数
set_role()
设置用户的角色,会删除用户之前所有的角色,设置新的角色。
remove_role()
两种用法:
remove_role(role1):表示从系统角色配置(wp_option)中删除role1。
$user->remove_role(role1):表示从用户所有角色中删除role1。
add_role()
也是两种用法。
add_role(role1):表示向系统角色配置(wp_option)中增加role1。
$user->add_role(role1):表示从给用户增加角色role1,但不会影响用户已有角色。
四、判断权限
通过判断用户角色实现
通过判断能力实现
五、插件角色系统的最佳实践
可以参考bbpress。
wordpress既有的角色作为一个“角色系列”。
插件自己的角色作为另一个“角色系列”。
每一个角色系列,一个用户只能有一个。
插件的角色系统的实现(存储、配置、权限判断)和wordpress一样。