2014-11-14 86 views
0

我试图制作一个界面,我可以在其中编辑一些附加到lineitem的元数据。我试过在订单项本身上使用update_post_meta(),但是它返回bool(false)。如何手动更新订单项元数据?通过WooCommerce中的代码更新订单项

谢谢!

+0

向我们展示一些代码,你试过。 –

+0

我真的设法弄清楚了。我会在这里发布我的解决方案。 – user2317084

回答

1

所以我设法弄明白了。我写了一个下面的小函数。因此,您只需使用API​​加载订单,解析每个订单项并调用wc_update_order_item_meta即可。唯一的是,如果您只想更新特定项目,您需要知道所销售物品的变体ID。

function update_order_item_meta($orderID, $variationID, $metaID, $metaValue) { 
$order = returnWC_API()->get_order($orderID)->{'order'}; 
if(!$order) { 
    return false; 
} 
if($variationID == "all") { 
    foreach ($order->{'line_items'} as $line_item) { 
     if(!wc_update_order_item_meta($line_item->{'id'}, $metaID, $metaValue)) { 
      return false; 
     } 
    } 
    return true; 
} 

foreach ($order->{'line_items'} as $line_item) { 
    if($line_item->{'product_id'} == $variationID) { 
     return wc_update_order_item_meta($line_item->{'id'}, $metaID, $metaValue); 
    } 
} 

}