各広告申込情報に添付した広告申込情報のメタフィールドを更新しようとしましたが停止しました。特定の注文への電話から、あなたはあなたに以下の添付された広告申込情報メタを見ます:
"line_items":[
{
"id":243,
"name":"Example Product",
"product_id":194,
"variation_id":0,
"quantity":2,
"tax_class":"",
"subtotal":"84.00",
"subtotal_tax":"0.00",
"total":"84.00",
"total_tax":"0.00",
"taxes":[ ],
"meta_data":[
{
"id":2197,
"key":"_tracking_number",
"value":""
},
{
"id":2198,
"key":"_estimate_delivery_date",
"value":""
},
{
"id":2199,
"key":"_carrier",
"value":""
},
{
"id":2200,
"key":"_service",
"value":""
},
]
その考えは、我々のディストリビューターがそれぞれの注文をプログラムで引き下げ、そして次に出荷確認Eメールを引き起こすメタを更新するということです。
私の問題は、私が以下のようにcurlを使って自分自身でメタデータを更新(テスト)しようとしたときです。
--data '{"status":"completed","line_items":{"0":{"meta_data":{"_tracking_number":"being tracked"}}}}'
私は言ってエラーが出ます:
"Invalid parameter(s): line_items","data":{"status":400,"params":{"line_items":"line_items[0][meta_data] is not of type array."}}
Line_itemsは確かに配列なので、これは混乱です。また、特定の広告申込情報IDを使用してみましたが、戻り構造に基づいて、広告申込情報IDとメタデータはどちらも広告申込情報オブジェクトの最上位レベルのキーです。
私はline_items[0]
にアクセスするだけでテストできます。私は1つの広告申込情報しか持っておらず、line_itemの値は上記からわかるように配列です。
line_items[0][meta_data]
も配列AFAIKに見えます。私が間違ってやっていることについて何か指導は?
大丈夫、広告申込情報はルート自体でlaアクセスされる可能性があります。
/wp-json/wc/v2/orders/2594/line_items
しかし、これ(パラメータとしても)の多くの繰り返しもうまくいきませんでした。
編集: 何らかの理由で広告申込情報に関連付けられたproduct_idを追加する必要がありました...次のcURLは機能します(HTTP 200)が機能しましたが、実際にはフィールドを更新しませんでした。私はAPIのv2を使っています。
--data '{"status":"completed","line_items":{"0":{"product_id":"194","meta_data":{"3":{"_carrier":"carrier"}}}}}'
なぜこれが更新されないのですか?
何らかの理由で、配列を2倍にする必要があります。firt要素を参照しているため、これは影響を受けません。私はこれをPHPで使います。
function saveMetaItem($id_order,$id_item,$id_product,$meta_key,$meta_value){
$woo = new wooclient();
$data = array(
'line_items' => array(array(
'id' => $id_item,
'product_id' => $id_product,
'meta_data' => array(array(
'key' => $meta_key,
'value' => $meta_value
))
))
);
$result = $woo->put('orders/'.$id_order, $data);
return $result;
}
Line_itemsとmeta_dataの両方でdouble array()が呼び出されることに注意してください。 id
とproduct_id
の両方も提供します。それをJSONに変換すれば完了です;-)