为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
达令说 2023-07-08 15:47:09
我正在建立一个 Woo 网站,该网站将与 Sage X3 ERP 系统集成。我们将把新订单推送给 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 ); } 如何从数据库表 posts ID 2746 获取值?我似乎无法让它发挥作用。
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

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

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

但你需要$some_value从某个地方出发……

这是关于帖子元数据,但不是帖子数据,所以相关的数据库表是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);


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信