You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce中为到店自提配送方式设置20%折扣

WooCommerce到店自提20%折扣正确实现方案

原代码存在的问题

  • 仅通过JS修改前端显示的总价,实际订单结算时仍会使用原价,属于视觉层面的修改,没有真正改动订单计算逻辑
  • DOM选择器依赖固定HTML结构,主题或WooCommerce版本更新后极易失效
  • 缺少后端对折扣的验证与应用,存在被恶意篡改的风险

正确实现代码(适配WordPress 6.4.2 + WooCommerce 8.4.0)

以下代码会在后端检测用户选择的配送方式,当选中「到店自提」时自动应用20%折扣,切换配送方式时自动移除折扣:

// 检测当前是否选择到店自提配送方式
function is_local_pickup_selected() {
    // 获取会话中已选择的配送方式
    $chosen_shipping_methods = WC()->session->get('chosen_shipping_methods');
    
    // 替换为你的到店自提配送方式ID,可通过浏览器开发者工具查看对应input的value值
    $local_pickup_id = 'local_pickup:1';
    
    return in_array($local_pickup_id, $chosen_shipping_methods);
}

// 应用到店自提折扣
function apply_local_pickup_discount() {
    if (is_admin() && !defined('DOING_AJAX')) return;
    
    // 仅在购物车/结账页面生效,且已选择到店自提
    if ( (is_cart() || is_checkout()) && is_local_pickup_selected() ) {
        $discount_percentage = 20; // 折扣百分比
        $cart_subtotal = WC()->cart->subtotal; // 取购物车小计(不含运费)
        
        // 计算折扣金额
        $discount_amount = ($cart_subtotal * $discount_percentage) / 100;
        
        // 添加折扣到购物车费用明细
        WC()->cart->add_fee(
            '到店自提折扣('.$discount_percentage.'%)',
            -$discount_amount, // 负数表示折扣
            true, // 允许税费计算
            '' // 税费类别,留空使用默认规则
        );
    }
}
add_action('woocommerce_cart_calculate_fees', 'apply_local_pickup_discount');

// 切换配送方式时自动更新购物车
function update_cart_on_shipping_change() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $('body').on('change', 'input[name^="shipping_method"]', function() {
                $(document.body).trigger('update_checkout');
            });
        });
    </script>
    <?php
}
add_action('wp_footer', 'update_cart_on_shipping_change');

配置与验证步骤

  1. 确认配送方式ID:打开结账页面,用浏览器开发者工具查看「到店自提」选项对应的input标签value值,替换代码中的$local_pickup_id(可能为local_pickup:0或其他,取决于你的设置)
  2. 添加代码:将代码粘贴到当前主题的functions.php文件,或使用自定义代码插件(如Code Snippets)
  3. 测试验证:选择到店自提后,查看购物车/结账页面的费用明细,确认折扣已正确显示;提交订单后查看订单详情,确保折扣已计入实际订单总价

方案优势

  • 所有计算在后端完成,完全适配WooCommerce订单逻辑,避免前端修改的视觉误差
  • 依赖WooCommerce官方API,兼容性更强,不易因版本更新失效
  • 自动处理配送方式切换,无需用户手动刷新页面

内容的提问来源于stack exchange,提问作者Hasan Aydemir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:27:46