我正在使用此代码 -
$info = array();
$info['user_login'] = $_POST['username'];
$info['user_password'] = $_POST['password'];
$info['remember'] = true;
$user_signon = wp_signon( $info, false );
if ( is_wp_error($user_signon) ){
echo json_encode(array('loggedin'=>false, 'message'=>__('Wrong username or password.')));
} else {
echo json_encode(array('loggedin'=>true, 'message'=>__('Login successful, redirecting...')));
}
die();
登录工作正常。但是我如何限制具有编辑角色的用户在此功能中,以便我可以检查角色,如果它在那里,那么我将在json中传递自定义错误消息?
答案 0 :(得分:1)
要限制特定用户角色,首先应检查用户角色。如果用户具有受限制的角色,则只是不执行登录操作并通过错误消息,否则通过wp_signon
登录用户。这是完整的代码应该是什么样的。
$info = array();
$info['user_login'] = $_POST['username'];
$info['user_password'] = $_POST['password'];
$info['remember'] = true;
$user = get_user_by( 'login', $info['user_login'] );
if ( $user && in_array( 'editor', (array) $user->roles ) ) {
echo json_encode(array('loggedin'=>false, 'message'=>__('Editors are restricted.')));
}else{
$user_signon = wp_signon( $info, false );
if ( is_wp_error($user_signon) ){
echo json_encode(array('loggedin'=>false, 'message'=>__('Wrong username or password.')));
} else {
echo json_encode(array('loggedin'=>true, 'message'=>__('Login successful, redirecting...')));
}
}