在我的插件中,我调用以下内容:
$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 :(得分: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和trim进行清理即可。也使用esc_attr来清理它。