Wordpress WooCommerce REST API:更新装运的订单行项目元数据
我还提到了一个问题,即使用node.js通过WooCommerce REST API更新订单行项目的元数据 我一直在按照以下步骤更新订单(并在某些字段中成功): 现在,我想要实现的是更改订单中已发货行项目的数量。我通常会在wordpress UI中使用偏序WC插件 下面,您可以找到我使用orders API调用从WC获得的行项目的屏幕截图。meta_数据数组的最后一个元素的键为“shipped”,它包含一个带有一个对象的数组,表示已装运了一个(两个有序项中的一个):Wordpress WooCommerce REST API:更新装运的订单行项目元数据,wordpress,woocommerce,put,woocommerce-rest-api,partial-ordering,Wordpress,Woocommerce,Put,Woocommerce Rest Api,Partial Ordering,我还提到了一个问题,即使用node.js通过WooCommerce REST API更新订单行项目的元数据 我一直在按照以下步骤更新订单(并在某些字段中成功): 现在,我想要实现的是更改订单中已发货行项目的数量。我通常会在wordpress UI中使用偏序WC插件 下面,您可以找到我使用orders API调用从WC获得的行项目的屏幕截图。meta_数据数组的最后一个元素的键为“shipped”,它包含一个带有一个对象的数组,表示已装运了一个(两个有序项中的一个): "line_items":
"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
},
如您所见,键“shipped”的值是一个对象。当我尝试将其发送(返回)到WC时,我会收到一个错误消息:
“数据”:{“状态”:400,“参数”:{“行项目”:“行项目[0][元数据][3][value]不是字符串类型。”}}}
当我尝试将值作为字符串发送时,即。
lineItems[0]。元数据=[{key:“shipped”,值:[{qty:'2'}]“}]
我没有收到任何错误,但WC将其视为字符串,而不是对象,并且没有按照我的预期方式更新DB中的装运数量(它只将装运数量拉低到0):
任何见解或想法-我如何通过WC API修改行项目的发货数量?因此,显然WP 4.9版本中存在一个bug,该bug最近在以下提交中修复: 它涉及RESTAPI模式,在将修复程序合并到WooCommerce之后,问题消失了,现在我可以将数据作为对象发送 有关此主题的更多信息,请参见此处:
因此,很明显,WP 4.9版本中存在一个bug,最近在以下提交中修复了该bug: 它涉及RESTAPI模式,在将修复程序合并到WooCommerce之后,问题消失了,现在我可以将数据作为对象发送 有关此主题的更多信息,请参见此处:
您应该用原始数据替换屏幕截图……似乎它应该是一个序列化数组(作为字符串)才能被woocommerce接受。但我不知道您需要如何设置它,因为我不是REST API的真正专家。@LoicTheAztec,我想我已经使用了一个序列化数组
(“[{qty:'2'}]”)并且它不起作用。您应该用原始数据替换屏幕截图……似乎它应该是一个序列化数组(作为字符串)才能被woocommerce接受。但我不知道您需要如何设置它,因为我不是RESTAPI方面的专家。@LoicTheAztec,我想我已经使用了一个序列化数组(“[{qty:'2'}]”)
,但它不起作用
{
"id": 21640,
"key": "shipped",
"value": "[{qty:'2'}]"
}