是否通过前台表单登录管理员?

时间:2019-10-14 作者:Phuong

我正在开发一个wordpress网站,客户希望我建立一个自定义登录页面,并通过电子邮件登录,而不是用户名。和具有自定义url“/管理/”的管理页面

下面是我的登录代码:

$email = $_POST[\'email\'];
$pass = $_POST[\'password\'];
$user = get_user_by(\'email\', $email);
if (wp_check_password($pass, $user->data->user_pass, $user->ID)) {
   wp_set_current_user($user->data->ID, $user->data->user_login);
   wp_set_auth_cookie($user->data->ID);
   do_action( \'wp_login\', $user->data->user_login );
   $_SESSION[\'success\'] = \'Hello \' . $user->data->display_name . \'!\';
   wp_safe_redirect(wp_get_referer());
   exit();
}
我的问题是:

当我提交时,网站返回成功,前端的当前用户已更改。但当我尝试转到管理仪表板时,它会将我重定向到wp登录。php并要求我再次登录。我不知道是什么问题,也不知道如何解决。

所以,请帮帮我!

1 个回复
SO网友:butlerblog

虽然你不应该使用$_SESSION (正如汤姆已经指出的)。此外,ID、user\\u pass和user\\u login都是用户对象中的顶级。

以下是我要尝试的:

$email = sanitize_email( $_POST[\'email\'] );
$pass  = $_POST[\'password\'];
$user  = get_user_by( \'email\', $email );

if ( wp_check_password( $pass, $user->user_pass, $user->ID ) ) {
   wp_set_current_user( $user->ID );
   wp_set_auth_cookie( $user->ID );
   do_action( \'wp_login\', $user->user_login );
   wp_safe_redirect( wp_get_referer() );
   exit();
}