将自定义用户字段传递给 WooCommerce 订单元数据

Passing Custom User Fields to WooCommerce Order Metadata

我正在努力建立一个将与 Sage X3 ERP 系统集成的 Woo 站点。我们将向 Sage 推送新订单。现在我想为每个客户添加一个自定义 ID 字段,并且我能够使用 ACF 插件完成此操作。现在我只需要找到一种方法将该 ID 推送到订单元数据,以便 Sage 可以正确识别客户。

实现该目标的最佳方法是什么?该字段的名称是“Sage X3 Customer ID”,键是“sagecustomerid”。任何帮助将不胜感激。


编辑:

我觉得我越来越接近了,因为我现在根据以下代码在订单元中看到 'sagecustomerid':

add_action( 'woocommerce_checkout_create_order', 'before_checkout_create_order', 10, 2 ); 
function before_checkout_create_order( $order, $data ) { 
    $order->update_meta_data( 'sagecustomerid', '$value', $meta_id = 2746 ); 
} 

如何从数据库 table 帖子 ID 2746 获取值?

我似乎无法让它工作。

您的函数中不需要 meta ID,因此在您的函数代码中您将拥有:

$order->update_meta_data( 'sagecustomer', $some_value );  

But you need to get $some_value from somewhere…

这是关于post元数据,而不是post数据,所以相关数据库table是wp_postmeta订单…

如果你需要的数据来自用户元数据,代码会有点不同,比如:

add_action( 'woocommerce_checkout_create_order', 'before_checkout_create_order', 10, 2 ); 
function before_checkout_create_order( $order, $data ) { 
    if ( $value = get_user_meta( $order->get_user_id(), 'sagecustomerid', true ) ) {
        $order->update_meta_data( 'sagecustomer', $value ); 
    } 
} 

完成后,您将能够从以下位置获得 'sagecustomer' 元值:

  • WC_Order 对象使用:$value = $order->get_meta('sagecustomer');
  • 订单 ID ($order_id) 使用:$value = get_post_meta($order_id, 'sagecustomer', true);