2015-08-25 34 views
0

在我的插件我所说的以下内容:add_role和set_role应用角色到用户

$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' 
     ) 
    ); 

仍然没有运气。如果我删除“员工”角色,则用空白角色创建用户。

回答

0

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

$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; 
} 

使用用户输入的数据之前,只是应用的stripslashes和内饰进行清洁。也使用esc_attr来清理它。

相关问题