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

如何实现WooCommerce已购/未购客户登录后差异化重定向

解决方案

这个需求完全可以实现,WooCommerce虽然没有默认区分已购和仅注册用户的角色,但我们可以通过查询用户的有效订单记录来判断其是否购买过产品,进而实现差异化登录重定向。

替换你当前的代码为以下版本即可:

function ts_redirect_login( $redirect ) {
    // 保留结账页面的跳转逻辑,避免影响结账流程
    $redirect_page_id = url_to_postid( $redirect );
    $checkout_page_id = wc_get_page_id( 'checkout' );
    if( $redirect_page_id == $checkout_page_id ) {
        return $redirect;
    }

    // 获取当前登录用户对象
    $current_user = wp_get_current_user();
    if ( $current_user->ID === 0 ) {
        return $redirect; // 未登录用户直接返回原跳转地址
    }

    // 查询用户的有效订单数量(默认统计已完成状态的订单)
    $order_count = wc_get_customer_order_count( $current_user->ID );
    
    // 设置页面A和页面B的URL,可替换为具体页面ID或直接写URL
    $page_a_url = get_permalink( get_page_by_path( 'page-A' ) ); // 也可直接写 '/page-A/'
    $page_b_url = get_permalink( get_page_by_path( 'page-B' ) ); // 也可直接写 '/page-B/'

    // 根据订单数量判断跳转目标
    if ( $order_count === 0 ) {
        return $page_a_url;
    } else {
        return $page_b_url;
    }
}
add_filter( 'woocommerce_login_redirect', 'ts_redirect_login' );

代码说明:

  • 结账页面兼容:保留原代码的结账页面判断,确保用户从结账流程登录时不会被强制跳转,避免打断购买操作
  • 用户身份校验:先确认用户已登录,避免未登录状态下出现逻辑错误
  • 订单判断逻辑:使用WooCommerce内置函数wc_get_customer_order_count()获取用户的已完成订单数,若需要包含处理中、已付款等其他状态的订单,可自行扩展订单查询条件
  • 自定义页面配置:你可以根据实际页面情况,将页面URL替换为页面ID(比如get_permalink(123),123为页面ID)或者直接写固定路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:05:14