1

在 Wordpress-Shop 上,我使用带有高级自定义字段 (ACF) 和 WP-All-Import (WPAI) + WP-All-Export (WPAE) 的 WooCommerce (WC)。

我向 WC-Customer 添加了一个 ACF 字段CustomerNumber(它增强了 WP-User)。在 WPAI-XML-Import 上,我将CustomerNumber设置为来自 ERP 的值。所以所有客户都有一个唯一的CustomerNumber

我现在需要导出 WC-Orders(再次将它们导入 ERP)。Order-XML 必须包含来自属于该订单的客户的 CustomerNumber。

如我所见,来自客户的其他标准字段(例如姓名和地址)会自动复制到订单中(由 WooCommerce 本身)。

我现在的问题是:我必须如何为 ACF 执行此操作?我必须自己通过代码执行此操作吗?将相同的 AC 字段添加到 WC-Order 并挂钩到订单结帐并将值从客户复制到订单?或者是否有某种设置可以做到这一点并且我不认识?

谢谢

4

1 回答 1

0

我并没有真正找到答案。我目前的解决方案就像我在问题中描述的那样。

我为这些 acf 添加了一条新规则,以使它们也可以在订单中使用。然后我为新创建的订单添加了一个钩子,确定用户的 acf 并将必要的值复制到订单 acf 中。

function di_woocommerce_new_order( $order_id ) {
    $order = new WC_Order( $order_id );
    if ( !$order ) return;

    $customer_id = $order->get_customer_id();
    if ( !$customer_id ) return;

    $customer = new WC_Customer($customer_id);
    if ( !$customer ) return;

    $customer_number = $customer->get_meta('customernumber');
    if ( !$customer_number ) return;

    // add customer number
    $order->add_meta_data('customernumber', $customer_number);

    // update order modified timestamp
    $order->add_meta_data('order_last_updated', current_time( 'mysql' ));

    $order->save_meta_data();
}
add_action( 'woocommerce_checkout_order_processed', 'di_woocommerce_new_order', 10, 1);
于 2019-11-25T10:22:23.753 回答