WordPress登录后重定向至之前访问页面的实现需求
修改方案
要实现未登录用户访问指定页面时跳转至登录页,且登录后返回原访问页面,需调整两处核心逻辑:
- 跳转登录页时,携带当前页面的URL作为跳转参数
- 确保登录成功后WordPress使用该参数完成重定向
修改后的完整代码如下:
add_action( 'template_redirect', function() { if ( is_user_logged_in() || ! is_page() ) return; $restricted = array( 5049 ); // 受限页面ID列表 if ( in_array( get_queried_object_id(), $restricted ) ) { // 获取当前页面完整URL并编码 $redirect_url = urlencode( get_permalink( get_queried_object_id() ) ); // 跳转至登录页并携带redirect_to参数 wp_redirect( site_url( '/user-account?redirect_to=' . $redirect_url ) ); exit(); } }); // 可选:确保登录后正确跳转(部分主题/插件可能覆盖默认逻辑) add_filter( 'login_redirect', function( $redirect_to, $request, $user ) { // 检查是否存在有效redirect_to参数 if ( isset( $_GET['redirect_to'] ) && ! empty( $_GET['redirect_to'] ) ) { $redirect_to = urldecode( $_GET['redirect_to'] ); // 验证URL安全性,防止恶意跳转 if ( wp_validate_redirect( $redirect_to, home_url() ) ) { return $redirect_to; } } // 兜底逻辑:参数无效时跳转至用户账户页 return site_url( '/user-account' ); }, 10, 3 );
代码说明
- template_redirect钩子部分:当未登录用户访问受限页面时,获取当前页面永久链接并编码,将其作为
redirect_to参数附加到登录页URL后,实现跳转时传递目标页面信息。 - login_redirect钩子部分:推荐添加以兼容更多场景,它会优先读取并验证
redirect_to参数,确保跳转至用户原本访问的页面;若参数无效,则默认跳转至用户账户页,避免恶意跳转风险。
内容的提问来源于stack exchange,提问作者Mouna Sis
相关产品推荐
相关产品推荐

