【问题标题】:Passing Custom User Fields to WooCommerce Order Metadata将自定义用户字段传递给 WooCommerce 订单元数据
【发布时间】:2020-06-30 19:03:31
【问题描述】:

我正在建立一个将与 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 ); 
} 

如何从 db 表帖子 ID 2746 中获取值?

我似乎无法让它工作。

【问题讨论】:

  • @LoicTheAztec 嘿,对不起,我对这方面的事情还比较陌生。我能够在“wp_posts”数据库表(ID 2670)中找到该字段。是的,这是自定义用户字段。这只是在管理方面,因为我不需要客户查看此信息。还需要什么其他信息?谢谢。
  • @LoicTheAztec 好的,我刚刚检查过,wp_usermeta 表中确实有一个“sagecustomerid”meta_key。在那种情况下它会自动被推动吗?还是我还需要添加自定义代码?感谢您的帮助。
  • @LoicTheAztec 我正在查看 /wp-json/wc/v3/orders,因为那是要建造桥梁的地方,我在任何地方都看不到“sagecustomerid”。这基本上就是我想要放置它的地方。
  • @LoicTheAztec 但我确实在 /wp-json/wc/v3/customers/ 下找到了它。可以吗?
  • @LoicTheAztec 我觉得我快要接近了,因为我现在根据以下代码在订单元中看到“sagecustomerid”:add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 10, 3);函数 before_checkout_create_order( $order, $data ) { $order->update_meta_data( 'sagecustomer', '$value', $meta_id = 2746 );如何从 db table wp_posts ID 2746 中获取值?我似乎无法让它工作

标签: php wordpress woocommerce custom-fields user-data


【解决方案1】:

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

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

但是你需要从某个地方获得$some_value...

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

【讨论】:

  • 如果我需要的数据在 wp_usermeta 表中,这会影响代码的结构吗?我似乎无法正确提取值。
  • 你让我开心!这解决了我的困境。说真的,非常感谢。干杯。
猜你喜欢
  • 2020-07-06
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多