如何以編程方式在 WooCommerce 中創建獨特的優惠券代碼

已發表: 2020-07-06

在我們上一篇文章中,我們討論瞭如何將優惠券代碼自動應用於 WooCommerce 購物車。 在那裡,我們使用了在 WooCommerce -> Coupons 菜單下為不同客戶下的所有訂單創建的通用優惠券代碼。

但有時作為店主,您確實希望在某些情況下為您網站上的每個客戶創建一個唯一的優惠券代碼。 讓我們舉兩個例子,您可能想要創建唯一的優惠券代碼。

示例1:

作為在線商店所有者,您在客戶的購買週期中可能面臨的最糟糕的事情就是放棄購物車。 大約。 網站上 68% 到 70% 的購物車被用戶放棄,這可能有多種原因。 最常見的原因之一是產品價格較高或運費等額外費用較高,這通常在結賬時顯示,而不是在此之前。

因此,在這裡,為了最大限度地減少購物車放棄並將盡可能多的用戶轉化為客戶,您可以簡單地使用一些折扣券來吸引他們購買。 通過這種方式,您可以將廢棄的購物車轉換為回收的購物車。

在這種情況下,最好為每個廢棄的購物車提供一個唯一的優惠券代碼和一個使用限制,以避免多次使用該代碼。

示例 2:

創建唯一優惠券代碼的另一個示例是為從您的商店購買過一次的客戶,但為了吸引他們購買更多,您更願意向他們發送一些折扣券以供他們下次購買。 因此,如果您在這里為所有客戶創建一個通用優惠券代碼,他們可以將優惠券傳遞給他們認識的其他人,他們可以將其用於新購買。

因此,在這里為回頭客創建的優惠券代碼可能會被濫用。 為避免這種情況,最好為每個客戶創建一個唯一的優惠券代碼,並將使用限制設置為 1。

從 WooCommerce -> 優惠券菜單為每個客戶手動創建唯一的優惠券代碼是不可行的。 所以另一種選擇是添加一個代碼片段,為不同的用戶一次創建多個優惠券,我們將在我們的帖子中討論如何實現這一點。

在 WooCommerce 中創建唯一優惠券代碼的 2 種方法

創建唯一優惠券代碼的第一步是為每張優惠券創建一個隨機字符串。 這將使用以下代碼創建。

 $characters = "ABCDEFGHJKMNPQRSTUVWXYZ23456789";
$char_length = "8";
$random_string = substr(str_shuffle($characters), 0, $char_length);

這裡 substr() 函數返回由 start 和 length 參數指定的字符串部分,str_shuffle() 函數隨機打亂傳遞的字符串。

生成唯一字符串後,下一步是使用代碼片段創建優惠券代碼。 我們將討論在 WooCommerce 中以編程方式創建優惠券代碼的2 種方法。

1. 使用 wp_insert_post() 函數

以編程方式添加優惠券代碼的第一種方法是使用 wp_insert_post() 函數,該函數允許您添加或更新 WordPress 帖子。 所以在我們的例子中,我們使用這個函數添加一個帖子類型為 shop_coupon 的帖子。 要為創建的優惠券添加元數據,請使用 update_post_meta() 函數。 您需要將以下代碼添加到子主題的 functions.php 文件中或使用任何代碼片段插件。

 $coupon_code = 'UNIQUECODE'; // 使用隨機字符串片段創建的代碼。
$金額 = '10'; // 數量
$discount_type = '百分比'; // 類型:fixed_cart, percent, fixed_product, percent_product
          
$優惠券=數組(
    'post_title' => $coupon_code,
    'post_content' => '',
    'post_status' => '發布',
    'post_author' => 1,
    'post_type' => 'shop_coupon'
);
            
$new_coupon_id = wp_insert_post($coupon);
            
// 添加元
update_post_meta($new_coupon_id, 'discount_type', $discount_type);
update_post_meta($new_coupon_id, 'coupon_amount', $amount);
update_post_meta($new_coupon_id, 'individual_use', 'no' );
update_post_meta($new_coupon_id, 'product_ids', '' );
update_post_meta($new_coupon_id, 'exclude_product_ids', '' );
update_post_meta($new_coupon_id, 'usage_limit', '' );
update_post_meta($new_coupon_id, 'expiry_date', '' );
update_post_meta($new_coupon_id, 'apply_before_tax', '是');
update_post_meta($new_coupon_id, 'free_shipping', 'no' );

2. 使用 WooCommerce Rest API

以編程方式添加優惠券代碼的另一種方法是使用插件本身提供的 WooCommerce Rest API。 WooCommerce 為 Rest API 提供了完整的指南,包括身份驗證、獲取數據、優惠券、訂單等,但作為參考,下面是一個可用於創建優惠券代碼的小片段。

 需要一次 __DIR__ 。 '/供應商/autoload.php';

使用 Automattic\WooCommerce\Client;
使用 Automattic\WooCommerce\HttpClient\HttpClientException;

$woocommerce = 新客戶(
    'https://example.com',
    'consumer_key',
    'consumer_secret',
        [
            'wp_api' => 真,
      '版本' => 'wc/v3'
        ]
);

$數據 = [
    '代碼' => '10off',
    'discount_type' => '百分比',
    '數量' => '10',
    'individual_use' => 真的,
    'exclude_sale_items' => 真,
    'minimum_amount' => '100.00'
];
  
$woocommerce->post('優惠券', $data );

這是一個基本代碼片段,用於為訂單總額超過 100 美元的訂單創建 10% 的優惠券代碼。 優惠券代碼為“10off”,只能由一位客戶使用。 這些只是創建優惠券代碼所需的基本屬性,但如果您想添加一些其他屬性,這裡是它的列表。

id - ( int )對象的唯一標識符

代碼-(字符串)(必需)優惠券代碼。

金額- (字符串)折扣金額。 即使設置百分比,也應始終為數字。

date_created –(日期-時間)優惠券的創建日期,在網站的時區。

date_created_gmt –(日期時間)優惠券的創建日期,如 GMT。

date_modified – (date-time) 上次修改優惠券的日期,在站點的時區中。

date_modified_gmt –(日期時間)優惠券最後修改的日期,如 GMT。

discount_type –(字符串)確定將應用的折扣類型。 選項:百分比、fixed_cart 和 fixed_product。 默認為fixed_cart

描述- (字符串)優惠券描述。

date_expires –(字符串)優惠券到期的日期,在網站的時區。

date_expires_gmt –(字符串)優惠券到期的日期,如 GMT。

usage_count – (int) 優惠券已被使用的次數。

individual_use – (bool) 如果為真,則優惠券只能單獨使用。 其他應用的優惠券將從購物車中刪除。 默認為false

product_ids –(數組)可以使用優惠券的產品 ID 列表。

exclude_product_ids –(數組)不能使用優惠券的產品 ID 列表。

usage_limit - (int) 優惠券總共可以使用多少次。

usage_limit_per_user – (int) 每個客戶可以使用多少次優惠券。

limit_usage_to_x_items - (int) 購物車中可應用優惠券的最大商品數。

free_shipping – (bool) 如果為真並且免費送貨方式需要優惠券,則此優惠券將啟用免費送貨。 默認為false

product_categories –(數組)優惠券適用的類別 ID 列表。

exclude_product_categories –(數組)優惠券不適用的類別 ID 列表。

exclude_sale_items – (bool) 如果為真,則此優惠券將不適用於具有促銷價的商品。 默認為false

minimum_amount –(字符串)在應用優惠券之前需要在購物車中的最小訂單金額。

maximum_amount - (字符串)使用優惠券時允許的最大訂單金額。

email_restrictions - (數組)可以使用此優惠券的電子郵件地址列表。

used_by –(數組)已使用優惠券的用戶 ID(或訪客電子郵件地址)列表。

meta_data –(數組)元數據。

結論

上面提到的代碼片段只是如何創建優惠券代碼的示例。 要在您的網站上使用它們,需要將其附加到所需的任何掛鉤或過濾器上。 例如,當您跟踪購物車放棄時,它可以用在購物車上的任何掛鉤上,也可以在每週運行的 Cron 作業中使用,以向您的客戶發送電子郵件更新。

利用獨特的優惠券代碼,為您的網站吸引一些滿意的回頭客。