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

WordPress ARMember插件下WooCommerce页面登录后回跳异常求助

问题解决方案

根因说明

  • 你当前自定义的跳转代码拼接的redirect_to参数缺失HTTP/HTTPS协议,WordPress原生登录跳转逻辑无法识别完整跳转目标
  • ARMember插件的重定向规则优先级高于默认参数传递逻辑,会自动覆盖URL携带的redirect_to参数,导致自定义跳转失效
  • WooCommerce自带的账户页重定向逻辑和自定义代码存在优先级冲突

修复步骤

第一步:替换原有的未登录跳转代码

删掉你之前写的PHP片段,先添加自定义登录页适配代码,保证wp_login_url函数输出你正在使用的/login地址:

add_filter( 'login_url', 'custom_login_page_url', 10, 2 );
function custom_login_page_url( $login_url, $redirect ) {
    $custom_login_url = home_url( '/login' );
    if ( ! empty( $redirect ) ) {
        return add_query_arg( 'redirect_to', urlencode( $redirect ), $custom_login_url );
    }
    return $custom_login_url;
}

再添加上未登录访问WooCommerce页面的跳转逻辑:

add_action( 'template_redirect', 'wc_redirect_non_logged_to_login_access');
function wc_redirect_non_logged_to_login_access() {
    if ( ! is_user_logged_in() && ( is_woocommerce() || is_shop() || is_cart() || is_checkout() || is_account_page() ) ) {
        $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
        wp_redirect( wp_login_url( $current_url ) );
        exit();
    }
}

第二步:添加高优先级登录后重定向钩子

新增以下代码,指定登录后优先读取redirect_to参数的跳转目标,优先级设置为999,覆盖ARMember和WooCommerce的默认重定向规则:

add_filter( 'login_redirect', 'custom_login_redirect_after_login', 999, 3 );
function custom_login_redirect_after_login( $redirect_to, $request, $user ) {
    if ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
        return esc_url_raw( $_REQUEST['redirect_to'] );
    }
    return $redirect_to;
}

第三步:ARMember配置校验

进入ARMember常规设置的重定向页面,确认以下配置:

  • 开启「优先使用引荐链接作为重定向目标」选项
  • 不要勾选「强制所有登录用户跳转到固定地址」的开关

第四步:生效校验

保存代码后清空WordPress全站缓存、浏览器缓存,分别测试未登录状态下访问/shop、/cart、/myaccount页面,跳转登录后即可自动回到对应访问地址。

内容的提问来源于stack exchange,提问作者Fabio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:06:03