[WooCommerce] 程式化建立折價券(Coupon)的方法

本篇文章更新時間:2022/09/11
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


客戶從募資平台賣了一套課程,實際上消費者會是拿到一張折價券(Coupon),之後網站正式對外開放(銷售)的時候,讓首批支持者可以拿著這批折價券來全額折抵這個課程。

要一張一張的上架 WooCommerce 也不是不行,但可以透過程式來幫忙建立折價券,絕對是省時省力!

建立這樣的折價券有下面的資訊要先蒐集:

  1. 折價券對應的商品編號
  2. 折價的類型

商品編號是 WooCommerce 建立好商品後就可以找到的那個 ID。折價類型是 WooCommerce 內建的選項:

Array
(
    [percent] => 百分比折扣
    [fixed_cart] => 固定的購物車折扣
    [fixed_product] => 固定的商品折扣
)

wc_get_coupon_types() 方法輸出的選項

這邊因為不確定日後會不會更改網站上售價,所以折價的方式會是「對應商品,做百分比折扣」比較保險,免得晚一點才兌換的首批支持者會要補貼價差。

程式如下:

 $coupon_code) {
    $coupon = new WC_Coupon();
    // 設定折價碼
    $coupon->set_code($coupon_code);
    // 設定折價券的描述
    $coupon->set_description('預購免費 Coupon 券');
    // 使用百分比折扣(預設是 固定的購物車折扣)
    $coupon->set_discount_type('percent');
    // 設定對應百分比折扣數,100 就是指 100% 折抵
    $coupon->set_amount(100);
    // 設定免運
    $coupon->set_free_shipping(true);
    // 設定獨立使用
    $coupon->set_individual_use(true);
    // 設定指定的商品,數字為商品編號
    $coupon->set_product_ids(array(325));
    // 限制使用次數一次
    $coupon->set_usage_limit(1);
    // 限制對商品的使用次數一次
    $coupon->set_limit_usage_to_x_items(1);
    // 限制每個使用者只能用一次
    $coupon->set_usage_limit_per_user(1);
    // 儲存
    $coupon->save();
}

還有其他的控制項如下:

// 設定折價券有效期
$coupon->set_date_expires( 'DD-MM-YYYY' );
// 設定最低消費金額限制
$coupon->set_minimum_amount( 100 );
// 設定最高消費金額限制
$coupon->set_maximum_amount( 999 );
// 設定排除銷售商品
$coupon->set_exclude_sale_items( true );
// 排除的商品(陣列)
$coupon->set_excluded_product_ids( array( 1, 2 ) );
// 指定的商品分類(分類編號)
$coupon->set_product_categories( array( 12 ) );
// 排除的指定商品分配(分類編號)
$coupon->set_excluded_product_categories( array( 3, 4, 5 ) );
// 限制能使用的信箱
$coupon->set_email_restrictions(
    array(
        '[email protected]',
        '[email protected]',
        // 信箱陣列
    )
);

如果有安裝其他加強折價券的外掛就要研究對應的 Hook 來處理,但基本上這樣已經很夠了~


Share:

作者: Chun

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

發佈留言

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


文章
Filter
Apply Filters
Mastodon