我需要创建一个类似于以下功能的函数:
主要用户角色是订户,但不是其他任何次要角色吗?然后将辅助角色“ Staff”添加到用户。所以他们是订户和员工。
我很讨厌条件PHP。谁能给我一个干净的功能?
答案 0 :(得分:1)
那里有一些可能有用的用户角色插件,例如Multiple Roles。我个人没有使用过它,所以我无法证明它的表现如何。如果只想使用简单的功能,则需要在add_role()
对象上使用WP_User
函数。
因此,请根据需要获取用户对象:
wp_get_current_user()
。get_userdata()
。get_user_by()
要为已登录的任何用户运行此命令,可以使用以下命令:
add_action( 'init', 'add_staff_role_to_subscriber');
function add_staff_role_to_subscriber(){
if( is_user_logged_in() ){
$user = wp_get_current_user();
// If user is a Subscriber with NO other roles
if( $user->roles[0] == 'subscriber' && ! isset( $user->roles[1] ) ){
$user->add_role('staff');
}
}
}
它的作用是确保当前用户已登录,然后获取该用户的WP_User
对象。 $user->roles
是一维数组,因此您可以通过确保{{来确保分配给他们的唯一角色是subscriber
,并且在数组中没有第二个$role
1}}未设置或为假。
一旦向用户添加了$user->roles[1]
角色,由于staff
将被设置为$user->roles[1]
,或者如果他们已经具有第二角色,则if语句将始终为false。不会影响他们。
请注意,在您的问题中,您将staff
大写,但是在WordPress中角色是小写的,因此我在代码中将Subscriber
小写了。在执行此代码之前,您可能需要确保大小写匹配。