我需要创建一个像以下一样的函数:
是主要用户角色订阅者,但也不是任何其他次要角色?然后将辅助角色“Staff”添加到用户。所以他们是订阅者和员工。
我厌倦了有条件的PHP。谁能给我一个干净的功能?
有一些用户角色插件可以提供帮助,例如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
,确保未设置$user->roles[1]
,或者为false。
一旦将staff
角色添加到用户,if语句将始终为false,因为$user->roles[1]
将设置为staff
,或者如果它们已经具有次要角色,则它将不会影响它们。
注意,在你的问题中,你有Subscriber
大写,但角色在WordPress中是小写的,所以我在我的代码中使staff
小写。在执行此代码之前,您可能需要确保大小写匹配。