我正在开发一个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并要求我再次登录。我不知道是什么问题,也不知道如何解决。
所以,请帮帮我!
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();
}