大家好,我在这里找到了这个代码片段:
add_action( \'set_user_role\', function( $user_id, $role, $old_roles )
{
// Your code ...
}, 10, 3 );
资料来源:
Execute a function when admin changes the user role并希望对其进行修改,以便可以通过以下方式设置用户角色:
1个用户具有角色“level0”和“customer”->角色“level1”和“vendor”
2用户具有角色“level1”和“vendor”->角色“level0”和“customer”
如果管理员将角色“level0”更改为“level1”,则代码应将第二个角色从“客户”更新为“供应商”,反之亦然。
我尝试了以下代码,但不起作用:
add_action( \'set_user_role\', \'rb_update_user_role\',10,3);
function rb_update_user_role(){
$user_id = get_current_user_id();
$user = new WP_User ($user_id);
if (current_user_is(\'s2member_level0\') && current_user_is(\'vendor\')){
$user->remove_role(\'vendor\');
$user->add_role(\'customer\');
}
if(current_user_is(\'s2member_level1\') && current_user_is (\'customer\')){
$user->remove_role(\'customer\');
$user->add_role(\'vendor\');
}
}
有没有任何建议或代码片段可以帮助我解决这个问题?还是我需要另一种方法?
编辑:
当用户被激活时,我添加了第二个这样的角色
add_action( \'bp_core_activated_user\', \'add_secondary_role_new\', 10, 1 );
function add_secondary_role_new( $user_id ) {
global $members_template;
$user = get_user_by(\'id\', $user_id);
if (user_can($members_template->member->id,\'s2member_level1\')){
$user->add_role(\'vendor\');
}
else{
$user->add_role(\'customer\');
}
}