通过 Rest API v3 导入订单时更改 WooCommerce 订单号

问题描述 投票:0回答:1

我目前正在使用 WooCommerce Rest API 将订单从市场导入到 WooCommerce。导入后,市场订单 ID 将添加到 WooCommerce 订单的客户注释字段中。 WooCommerce 订单号是从 WooCommerce 自动分配的。当订单导入到 WooCommerce 时,我想使用代码片段将 WooCommerce 订单号更改为存储在 WooCommerce 订单的客户注释字段中的市场订单 ID。

查看WooCommerce Rest API(订单)文档后,我仍然不确定是否需要更新号码或 order_key 来实现此目的。

以黄色突出显示的是我要替换的数字:

enter image description here

这是我的代码片段,但不起作用:

function update_woocommerce_order_key( $order_id ) {
    // Get the order object
    $order = wc_get_order( $order_id );

    if ( ! $order ) {
        return;
    }

    // Get the customer note
    $customer_note = $order->get_customer_note();

    // Check if the customer note is not empty
    if ( ! empty( $customer_note ) ) {
        // Update the order key meta field
        update_post_meta( $order_id, '_order_key', $customer_note );

        // Update the order key in the order object
        $order->set_order_key( $customer_note );
        $order->save();
    }
}
add_action( 'woocommerce_api_create_order', 'update_woocommerce_order_key', 10, 1 );

有什么建议如何解决这个问题吗?

我在导入时尝试了order_id、number、order_key,但没有任何效果。

我希望 WooCommerce 订单号能够使用自定义备注中的订单号进行更新。

php wordpress woocommerce orders woocommerce-rest-api
1个回答
0
投票

您不应将原始市场订单号作为订单备注导入,而应直接将其导入为“_order_number”自定义订单元数据,并在您的请求中插入如下内容:

"meta_data": [
    {
        "key": "_order_number",
        "value": $marketplace_order_number,
    }
]

然后,完成后,您可以使用以下过滤器挂钩来更改显示的订单号:

// Displayed order number from custom metadata
add_filter( 'woocommerce_order_number', 'displayed_custom_order_number', 10, 2 );
function displayed_custom_order_number( $order_id, $order ) {
    if ( $order_number = $order->get_meta('_order_number') ) {
        return $order_number;
    }
    return $order_id;
}

应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.