我已经在一个问题上发布了通过node.js。
我一直在遵循以下步骤以更新订单(并且在某些领域很成功):https://woocommerce.github.io/woocommerce-rest-api-docs/#update-an-rorder
现在,我想实现的目标是更改订单的发货订单项数量。我通常会在WordPress UI中使用部分订单WC插件。
在下面,您可以使用订单API调用从WC找到我从WC获得的行项的屏幕截图。meta_data数组的最后一个元素具有键"已发货",它包含一个带有一个对象的数组,指出已发货(两个有序项目中的一个):
"line_items": [{
"id": 1937,
"name": "Maya",
"product_id": 1271,
"variation_id": 1272,
"quantity": 2,
"tax_class": "",
"subtotal": "140.00",
"subtotal_tax": "0.00",
"total": "140.00",
"total_tax": "0.00",
"taxes": [],
"meta_data": [{
"id": 21637,
"key": "pa_product-color",
"value": "beige"
}, {
"id": 21638,
"key": "pa_shoe-size",
"value": "42"
}, {
"id": 21639,
"key": "pa_shoe-width",
"value": "wide"
}, {
"id": 21640,
"key": "shipped",
"value": [{
"qty": 1,
"date": "Nov 21, 2017"
}
]
}
],
"sku": "2522BE42W",
"price": 70
},
您可以看到,键"发货"的值是一个对象。当我将其发送给WC时,我会发现一个错误说: "data":{"status":400,"params":{"line_items":"line_items[0][meta_data][3][value] is not of type string."}}}
当我尝试将值发送为字符串时,即 lineItems[0].meta_data = [{key:"shipped", value: "[{qty:'2'}]" }]
我没有任何错误,但是WC将其视为字符串,而不是作为对象,也不会按照我预期的方式更新DB中的装运数量(仅将运送的数量拉到0):
{
"id": 21640,
"key": "shipped",
"value": "[{qty:'2'}]"
}
任何见解或想法 - 如何通过WC API修改已发货的订单项?
因此,显然WP 4.9版本中有一个错误,该版本最近在以下提交中固定:https://github.com/woocommerce/woocommerce/pull/17849
它涉及REST API模式,并在将修复程序合并到WooCommerce之后,问题消失了,现在我可以将数据发送为对象。
有关该主题的更多信息可以在此处找到:
https://github.com/woocommerce/wc-api-dev/pull/74