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

Woocommerce:挂接woocommerce_applied_coupon动作时如何获取客户邮箱?

woocommerce_applied_coupon 钩子中获取客户信息的实现说明

钩子上下文的信息可用性

woocommerce_applied_coupon 是WooCommerce购物车流程中的内置动作,原生回调仅接收优惠券代码作为入参,但在钩子执行的完整上下文里,不需要额外传参即可通过WooCommerce内置全局对象获取全量客户信息,完全可以支撑Mailchimp联系人定位的需求。

可获取的客户信息与获取路径

  • 已登录用户:可通过WC()->cart->get_customer()获取封装好的客户对象,直接读取用户ID、注册邮箱、姓名、自定义用户字段等信息,匹配Mailchimp联系人的核心识别字段(邮箱)
  • 未登录访客:该客户对象会自动读取暂存在WooCommerce会话中的访客联系信息(包括用户提前填写的收货邮箱、姓名、联系电话),无需等待订单提交即可获取有效联系标识
  • 全局辅助校验:可搭配wp_get_current_user()获取登录用户的补充字段,或者通过WC()->session读取访客的暂存行为数据,做更精准的身份匹配

面向Mailchimp打标场景的实现注意项

  • 增加空值兜底:部分访客在进入购物车初期、尚未填写任何联系信息时就触发优惠券应用动作,此时拿到的客户邮箱为空,需要直接跳过逻辑,避免无效的接口调用
  • 增加防重复触发机制:用户可能反复点击“应用优惠券”按钮造成钩子多次执行,可将已处理的优惠券代码存入WooCommerce会话做标记,同一个用户对同一张优惠券仅执行一次Mailchimp标签更新,避免触发接口频率限制
  • 增加优惠券匹配前置判断:在回调逻辑最开头判断当前应用的优惠券是否为需要追踪的目标券,非目标券直接终止逻辑,降低不必要的性能消耗

参考实现代码

add_action('woocommerce_applied_coupon', 'sync_mailchimp_tag_on_coupon_apply');
function sync_mailchimp_tag_on_coupon_apply($coupon_code) {
    // 匹配目标追踪优惠券
    $tracked_coupon = 'NEWYEAR15';
    if ($coupon_code !== $tracked_coupon) return;

    // 获取当前场景下的客户信息
    $current_customer = WC()->cart->get_customer();
    $customer_email = $current_customer->get_email();

    // 无有效邮箱直接跳过
    if (empty($customer_email)) return;

    // 会话防重复校验
    $processed_list = WC()->session->get('mailchimp_synced_coupons', []);
    if (in_array($coupon_code, $processed_list)) return;

    // 此处替换为你的Mailchimp接口调用逻辑:为$customer_email对应的联系人追加指定标签
    // 完成后更新会话标记
    $processed_list[] = $coupon_code;
    WC()->session->set('mailchimp_synced_coupons', $processed_list);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 21:06:08