WooCommerce 購買數量達到特定的門檻時,自動提供贈品

在激烈競爭的電子商務市場中,提供附加價值以提升顧客的購物體驗是關鍵策略之一。WooCommerce 的自動贈品功能,尤其是根據購買數量提供贈品,可以有效地促進銷售並增強客戶忠誠度。本文將介紹如何在 WooCommerce 中設置這一功能。

為什麼要強調購買數量?

購買數量是制定促銷策略的重要指標。當顧客購買的數量達到特定的門檻時,自動提供贈品不僅激勵顧客增加購買量,還提高了他們的滿意度。這不僅能促進即時銷售,也有助於提高顧客的回購率。

如何設置 WooCommerce 自動贈品功能?

以下步驟將幫助您設置 WooCommerce 自動贈品功能:

  1. 安裝與啟用程式碼將以下程式碼添加到主題的 functions.php 文件或自訂插件中,為產品新增自定義欄位來設置贈品條件。

  2. 設置產品贈品條件
    • 進入 WooCommerce 的產品編輯頁面。
    • 在「一般」設置頁面中,找到「Enable Gift Conditions」勾選框,勾選以啟用此功能。
    • 在「Gift Conditions」欄位中輸入贈品條件,格式為 購買數量:贈品ID,例如 2:61028,5:61521。這樣設置可以根據不同的購買數量自動選擇對應的贈品。
// 添加自定義欄位至產品編輯頁面,並將啟用選項放在最上面
add_action('woocommerce_product_options_general_product_data', 'add_custom_gift_fields_v2');

function add_custom_gift_fields_v2() {
    echo '<div class="options_group">';

    woocommerce_wp_checkbox( 
        array( 
            'id' => '_enable_special_gift_conditions', 
            'label' => __('Enable Special Gift Conditions', 'woocommerce'), 
            'description' => __('Check to enable special gift conditions for this product.', 'woocommerce'),
            'desc_tip' => true,
        )
    );

    woocommerce_wp_text_input( 
        array( 
            'id' => '_special_gift_conditions', 
            'label' => __('Special Gift Conditions', 'woocommerce'), 
            'desc_tip' => 'true',
            'description' => __('Enter conditions like 2:61028,5:61521', 'woocommerce'),
            'type' => 'text'
        )
    );

    echo '</div>';
}

// 保存自定義欄位的值
add_action('woocommerce_process_product_meta', 'save_custom_gift_fields_v2');

function save_custom_gift_fields_v2($post_id) {
    $gift_conditions = isset($_POST['_special_gift_conditions']) ? sanitize_text_field($_POST['_special_gift_conditions']) : '';
    $enable_gift_conditions = isset($_POST['_enable_special_gift_conditions']) ? 'yes' : 'no';
    
    update_post_meta($post_id, '_special_gift_conditions', $gift_conditions);
    update_post_meta($post_id, '_enable_special_gift_conditions', $enable_gift_conditions);
}

// 在購物車更新後檢查贈品條件
add_action('woocommerce_cart_updated', 'update_cart_with_special_gifts');

function update_cart_with_special_gifts() {
    $cart = WC()->cart;
    $gift_ids_to_add = array();
    $gift_ids_in_cart = array();

    // 儲存已查詢過的商品贈品條件,避免重複查詢
    $product_gift_conditions = array();

    foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
        $product_id = $cart_item['product_id'];
        $quantity = $cart_item['quantity'];

        if (!isset($product_gift_conditions[$product_id])) {
            $product_gift_conditions[$product_id] = get_post_meta($product_id, '_special_gift_conditions', true);
        }

        // 檢查是否啟用贈品條件
        $enable_gift_conditions = get_post_meta($product_id, '_enable_special_gift_conditions', true);

        if ($enable_gift_conditions === 'yes') {
            $gift_conditions = $product_gift_conditions[$product_id];
            $best_gift_product_id = null;
            $highest_required_qty = 0;

            if (!empty($gift_conditions)) {
                // 解析贈品條件
                $conditions = explode(',', $gift_conditions);
                foreach ($conditions as $condition) {
                    list($required_qty, $gift_product_id) = explode(':', $condition);

                    if ($quantity >= (int)$required_qty && (int)$required_qty > $highest_required_qty) {
                        $highest_required_qty = (int)$required_qty;
                        $best_gift_product_id = $gift_product_id;
                    }
                }
            }

            if ($best_gift_product_id !== null) {
                $gift_ids_to_add[$best_gift_product_id] = true;
            }
        }

        // 收集所有已經在購物車中的贈品
        if (isset($cart_item['is_special_gift']) && $cart_item['is_special_gift']) {
            $gift_ids_in_cart[$product_id] = $cart_item_key;
        }
    }

    // 添加符合最高條件的贈品,但每種贈品只添加一次
    foreach ($gift_ids_to_add as $gift_id => $value) {
        if (!isset($gift_ids_in_cart[$gift_id])) {
            $cart->add_to_cart($gift_id, 1, '', array(), array('is_special_gift' => true));
        }
    }

    // 移除不再符合條件的贈品
    foreach ($gift_ids_in_cart as $gift_id => $cart_item_key) {
        if (!isset($gift_ids_to_add[$gift_id])) {
            $cart->remove_cart_item($cart_item_key);
        }
    }
}

// 將贈品價格設為 0 元並限制數量
add_action('woocommerce_before_calculate_totals', 'apply_special_gift_price_and_quantity');

function apply_special_gift_price_and_quantity($cart) {
    foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
        if (isset($cart_item['is_special_gift']) && $cart_item['is_special_gift']) {
            // 將贈品價格設為 0
            $cart_item['data']->set_price(0);
            
            // 將贈品數量固定為 1
            $cart_item['quantity'] = 1;
            $cart_item['data']->set_stock_quantity(1);
            $cart_item['data']->set_sold_individually(true);
        }
    }
}

功能亮點

  • 購買數量促銷策略:根據購買數量提供贈品,激勵顧客購買更多,達成購買門檻後自動獲得贈品,增加購物籃價值。
  • 靈活的條件設置:商家可以根據不同的購買量設置不同的贈品條件,並自動選擇最佳贈品方案。
  • 提高庫存周轉:透過促銷贈品,協助商家快速清理庫存,提升資金使用效率。

結論

WooCommerce 的自動贈品功能是一個強大的工具,可以根據購買數量提供獎勵,從而提高顧客滿意度和忠誠度。這一功能不僅提升了顧客的購物體驗,還能幫助商家增加銷售額並優化庫存管理。如果您希望提升您的 WooCommerce 商店的競爭力,這個功能將是您的不二選擇。

希望這篇文章能幫助您了解並有效運用 WooCommerce 自動贈品功能。如果有任何疑問或需要進一步的協助,請隨時聯繫我們。


瀏覽次數:1