返回

如何仅为特定的本地提货配送方式提供WooCommerce Checkout折扣?

php

## WooCommerce Checkout 中为特定本地提货配送方式提供折扣

作为电子商务网站的管理员,为你的客户提供额外的节省,例如折扣和促销活动,至关重要。然而,你可能希望针对不同的配送方式应用不同的折扣。本文将指导你如何修改 WooCommerce 设置,仅为某些特定的本地提货配送方式提供折扣。

### 问题:特定配送方式的折扣

想象一下,你经营一家在线商店,提供各种配送方式,包括本地提货、标准配送和快递配送。你希望为那些选择本地提货的客户提供折扣,以鼓励他们选择这种省钱、环保的配送方式。

### 解决方案:修改代码

为了仅为某些特定的本地提货配送方式应用折扣,你需要修改 WooCommerce 的代码。以下步骤将指导你完成此过程:

  1. 备份你的网站: 在修改任何代码之前,请务必备份你的网站以防止丢失数据。
  2. 添加代码段: 使用 FTP 客户端或文件管理器将以下代码段添加到你的 functions.php 文件中:
add_action( 'woocommerce_cart_calculate_fees', 'custom_discount_for_pickup_shipping_method', 10, 1 );
function custom_discount_for_pickup_shipping_method( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Only on checkout page
    if ( is_checkout() ) {
    
        $percentage = 5; // <=== Discount percentage
    
        $chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];
        $chosen_shipping_method    = explode(':', $chosen_shipping_method_id)[0];
    
        // Only for specific local pickup chosen shipping methods
        $allowed_pickup_methods = array( 'local_pickup:63', 'local_pickup:64', 'local_pickup:65', 'local_pickup:66', 'local_pickup:67', 'local_pickup:68', 'local_pickup:69' );
        if ( in_array( $chosen_shipping_method_id, $allowed_pickup_methods ) ) {
            // Calculate the discount
            $discount = $cart->get_subtotal() * $percentage / 100;
            // Add the discount
            $cart->add_fee( __('3% afhaalkorting, levering vanuit ons magazijn') . ' (' . $percentage . '%)', -$discount );
        }
    }
}
  1. 替换特定本地提货配送方式的 ID: 在代码段中,将 $allowed_pickup_methods 数组中的值替换为你希望应用折扣的本地提货配送方式的 ID。
  2. 保存更改: 保存你的 functions.php 文件,并清除网站的缓存。

### 结论

通过按照上述步骤操作,你将能够仅为特定的本地提货配送方式在 WooCommerce checkout 中提供折扣。这将使你为选择更具可持续性和成本效益的配送方式的客户提供激励,同时提高客户满意度。

### 常见问题解答

  1. 为什么折扣应用于所有配送方式?
    确保你在 functions.php 文件中将 $allowed_pickup_methods 数组中的值替换为你希望应用折扣的特定本地提货配送方式的 ID。

  2. 折扣是否可以与其他促销活动叠加?
    取决于所应用的折扣和促销活动,它们可能可以叠加。请测试你的网站以验证此操作。

  3. 如何显示折扣消息给客户?
    编辑 functions.php 文件中 $discount_message 变量以显示你希望客户看到的折扣消息。

  4. 折扣会影响订单总计吗?
    是的,折扣将从订单总计中扣除。

  5. 我可以根据不同的配送方式提供不同的折扣吗?
    是的,你可以通过添加多个 if 语句并针对每种配送方式指定不同的折扣百分比来实现这一点。