WordPress PHP实现访客自动登录后跳转至目标页而非首页的问题咨询
问题原因
你当前代码中写死了重定向目标为站点首页home_url(),所以登录完成后统一跳转首页,只需要将用户原本请求的页面地址作为重定向参数传入即可。
修改后完整代码
if(!is_user_logged_in()){ $creds = array(); $creds['user_login'] = 'test@test.com'; $creds['user_password'] = '123456'; $creds['remember'] = true; $user = wp_signon( $creds, false ); // 先判断登录是否出错,避免异常 if ( is_wp_error( $user ) ) { // 可根据需求自定义错误处理逻辑,这里直接输出错误信息 echo $user->get_error_message(); exit; } // 获取用户原本要访问的目标页面完整地址 $redirect_url = home_url( $_SERVER['REQUEST_URI'] ); // 重定向到目标页面 wp_redirect( $redirect_url ); // 重定向后必须加exit终止后续代码执行 exit; }
补充说明
- 如果你的触发逻辑在页面模板加载之前执行,
$_SERVER['REQUEST_URI']可以准确拿到用户发起请求的原始路径,拼接home_url()后就是完整的目标页地址,自带的查询参数也不会丢失 - 新增的登录错误判断可以避免账号密码失效、用户被删除等异常场景下的白屏问题
- 不要遗漏
wp_redirect()后的exit语句,否则可能出现重定向异常
内容的提问来源于stack exchange,提问作者Katherine Elizabeth Kath
相关产品推荐
相关产品推荐

