本篇文章更新時間:2023/12/02
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
使用 WooCommerce 當作 WordPress 延伸的強大電商外掛有一個很方便的地方就是:除了商品本身有變化類型,對商品加入購物車的當下也還可以使用 Meta 中繼資料來強化商品的屬性。
延伸閱讀 [WooCommerce] 增加購物車商品項目中繼資料 Meta 的方法 這篇提到的是「寫入中繼資料 Meta 的方法」
要取出訂單中每一個項目(Line Item)中的「中繼資料」不是難事,使用 wc_get_order_item_meta() 方法就可以。
但! 這方法一定得要先知道「你的 Meta Key 名稱」你才能取出資料,所以面對連 key 都是一種變數的情況下,取出特定資料反而變得困難。
使用方法: $item->get_formatted_meta_data( '_', true )
這才是本篇筆記的重點,因為也實在沒有很高的討論度,還是寫起來記錄一下好了XD
完整的程式碼片段:
$order = wc_get_order($order_id);
$items = array();
foreach ($order->get_items() as $item_id => $item) {
$meta_datas = $item->get_formatted_meta_data('_', true);
foreach ($meta_datas as $meta_data) {
$items[$meta_data->key] = $meta_data->value;
}
}
看到這,有沒有覺得這個方法好不直覺!? 也是去追查程式碼後才發現, WooCommerce v6.4 後才加入了包裝這方法的 get_all_formatted_meta_data()
新方法,如果要兼顧 WooCommerce 舊版本的話,建議還是要用上述 v3 就有的方法來處理。
另外,如果是要拿出前端呈現用的 Line Item meta data 可以使用 wc_display_item_meta($item, array('echo' => false))
這方法處理。