我使用以下代码来获取customer_id:
$order = wc_get_order($order_id);
$customer_id = $order->get_customer_id();
我通过woocommerce_new_order
钩子得到了$order
。
调用之后,$customer_id
为0。
如果我var_dump
$order
,我可以看到完整的对象,包括帐单地址,但客户ID为0。
这种情况发生在新订单创建时,付款前。我可以使用电子邮件来获得客户,但我想知道是否有办法在订单付款前获得客户ID。
谢谢
1条答案
按热度按时间rt4zxlrg1#
请改用
woocommerce_checkout_order_processed
操作($order_id
是该操作的第一个参数)。此操作在处理付款之前运行,它对现有客户和在结帐期间注册的客户都有效。请参阅
class-wc-checkout.php
的源代码:注意:如果您的客户不需要注册,则
get_customer_id()
仍可能在客户结账时抛出错误(因为此函数始终返回整数)。您可能希望将代码 Package 为if($order->get_user()){}
,因为此函数在客户结账时返回false
。