本篇文章更新時間:2023/05/19
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
WooCommerce 後台可以新增建立很多組優惠折扣碼。而建立的標題就等於該折扣碼。但訂單記錄的時候只有把折扣碼(也就是標題)給寫進訂單裡。
如果要開放顧客也查看這個折扣碼的描述等資訊,就要把折扣碼資訊也在建立訂單當下寫進去訂單裡。避免如果日後同一折扣碼,但有不同操作,又或是刪除了折扣碼查詢不到當時結帳資訊的問題。
function mxp_woocommerce_checkout_update_order_meta($order_id, $data) {
$order = wc_get_order($order_id);
$order_items = $order->get_items('coupon');
$coupons = array();
foreach ($order_items as $item_id => $item) {
// 只能拿到 COUPON 名稱,也就是標題,要去換成該篇 ID
$coupon_post_obj = get_page_by_title($item->get_name(), OBJECT, 'shop_coupon');
$coupon_id = $coupon_post_obj->ID;
$coupon = new WC_Coupon($coupon_id);
$c = $coupon->get_data();
$current_coupon = array(
'id' => $c['id'],
'code' => $c['code'],
'amount' => $c['amount'],
'discount_type' => $c['discount_type'],
'description' => $c['description'],
'usage_count' => $c['usage_count'],
);
$coupons[] = $current_coupon;
}
if (!empty($coupons)) {
$order->update_meta_data('mxp_coupons', $coupons);
$order->save();
}
}
add_action('woocommerce_checkout_update_order_meta', 'mxp_woocommerce_checkout_update_order_meta', 10, 2);
範例使用 woocommerce_checkout_update_order_meta
這個勾點,把結帳當前的折扣碼紀錄進訂單的 meta 資訊裡,這樣前端就可以處理當下訂單結帳時的折扣碼快照資訊了。