Wordpress 在woocommerce\u process\u shop\u order\u meta hook中,客户ID为0

Wordpress 在woocommerce\u process\u shop\u order\u meta hook中,客户ID为0,wordpress,woocommerce,Wordpress,Woocommerce,当使用Wordpress admin中的“添加订单”屏幕创建Woocommerce订单时,如果我在附加到Woocommerce\u process\u shop\u order\u meta的回调中使用wc\u get\u order()检索订单,我注意到客户ID为0-尽管我已经选择了客户。我正在编写的代码使用此数据同步到外部API,所以我的问题是:为什么此ID为空,是否有方法获取正确的ID 该准则的简化版本为: add_action('woocommerce_process_shop_orde

当使用Wordpress admin中的“添加订单”屏幕创建Woocommerce订单时,如果我在附加到Woocommerce\u process\u shop\u order\u meta的回调中使用wc\u get\u order()检索订单,我注意到客户ID为0-尽管我已经选择了客户。我正在编写的代码使用此数据同步到外部API,所以我的问题是:为什么此ID为空,是否有方法获取正确的ID

该准则的简化版本为:

add_action('woocommerce_process_shop_order_meta', 'processOrder', 10, 1);

function processOrder($order_id){
    $order = wc_get_order($order_id);
    die(print_r($order->get_customer_id(),1));
}


这是因为你使用的优先级。 见附图:

客户id保存在
add\u action('woocommerce\u process\u shop\u order\u meta','WC\u meta\u Box\u order\u Data::save',40,2)中其中优先级为
40

将优先级设置为大于40应该可以工作。

您是否尝试过使用User_ID$User_ID=$Order->get_User_ID()从订单ID测试用户ID;为了看看这是否得到了一个id Hi Brad,是的,我在我的真实代码中实际使用了get_user_id,我只是在这里稍微修改了一下,以便更好地理解这一点。可能需要注意的是,在更新订单时,用户/客户ID设置正确-只有在新订单中才会丢失。这让我相信我可能使用了错误的钩子…但是woocommerce上钩子的文档对于找到正确的钩子并没有真正的帮助。顺便说一下,我也打印了整个order对象,并且可以看到它通常被设置为0,所以这不仅仅是一个令人痛苦的函数。实际上,看看这里,谢谢你,伙计,但不幸的是,这没有帮助。我可能还应该指出,在这一点上,账单和发货详细信息也都是空的……这再次让我相信我使用了错误的钩子(因为看起来客户数据是在我的代码运行后保存的)。啊哈!谢谢你,我会测试一下,然后给你回复