[WooCommerce] 取得訂單當下使用的 Coupon 優惠券折扣碼資訊

本篇文章更新時間: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 資訊裡,這樣前端就可以處理當下訂單結帳時的折扣碼快照資訊了。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon