You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress登录后重定向至之前访问页面的实现需求

修改方案

要实现未登录用户访问指定页面时跳转至登录页,且登录后返回原访问页面,需调整两处核心逻辑:

  1. 跳转登录页时,携带当前页面的URL作为跳转参数
  2. 确保登录成功后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:36:26