Add_role和set_role为用户添加角色


add_role and set_role applying role to user

在我的插件中,我调用以下代码:

$caps = array("read"=>true, "edit_posts"=>false,"edit_other_posts"=>false,"edit_published_posts"=>false);
add_role("employee", "Employee", $caps);
add_role("manager", "Manager", $caps);

我试图允许下拉用户帐户创建,以便管理员可以选择是否创建的用户是一个经理或员工。

wp_create_user( $_POST['ae_uname'], $_POST['ae_pass'], $_POST['ae_email'] ); //new user registration
$user = get_userdatabylogin($_POST['ae_uname']); //get user information by username
$user_role = new WP_User( $user->ID );
$user_role->remove_role( 'subscriber' ); //remove user role
$user_role->remove_role( 'employee' ); //remove user role
//if ($_POST['employee_role'] == "manager") {
        $user_role->set_role( 'manager' ); //add new user
//} else { 
//   $user_role->add_role( 'employee' ); //add new user
//}

我验证了所有$_POST变量都正确提交了,但是我继续注释掉if语句只是为了双重确定。如果语句或否,创建的每个用户都被分配为'employee'角色。

我试过$user_role->add_role( 'manager' );,也试过$user_role->set_role( 'manager' );

在谷歌上搜索是否有一些"默认"角色设置出现空白,基于我的add_role()代码,我不知道我怎么能指定"雇员"作为默认设置。

我如何确保WordPress尊重我的角色设置?

编辑:

另外我试过

  wp_update_user(
        array(
          'ID'       => $user->ID,
          'nickname' => $email_address,
          'role'    => 'manager'
        )
      );

还是没有运气。如果我删除"employee"角色,则用户将被创建为空白角色。

我希望这足以插入一个新的用户

 $userdata = array(
'user_login'  =>  $_POST['login_name'],
'user_url'    =>  'http://www.kvcodes.com',
'user_pass'   =>  NULL , // When creating an user, `user_pass` is expected.
'role'      => 'employee');  
$user_id = wp_insert_user( $userdata ) ; 
// on success 
if(! is_wp_error( $user_id ) ) {
      echo "User created : ". $user_id;
} 

在使用用户输入的数据之前,只需应用条带斜线和修剪来清理它。也可以使用esc_attr来清理它。