我目前正在使用 WooCommerce Rest API v3 将订单从市场导入到 WooCommerce。导入后,市场订单 ID 将添加到 WooCommerce 订单的客户注释字段中。 WooCommerce 订单号是从 WooCommerce 自动分配的。当订单导入到 WooCommerce 时,我想使用代码片段将 WooCommerce 订单号更改为存储在 WooCommerce 订单的客户注释字段中的市场订单 ID。
查看WooCommerce Rest API(订单)文档后,我仍然不确定是否需要更新号码或 order_key 来实现此目的。
以黄色突出显示的是我要替换的数字:
这是我的代码片段,但不起作用:
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 订单号能够使用自定义备注中的订单号进行更新。
您不应将原始市场订单号作为订单备注导入,而应直接将其导入为“_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;
}
应该可以。