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

请求协助:货到付款(cash on delivery)时指定快递运费从3.5€调至5€

解决方案:基于支付方式调整特定配送方式运费

不用创建第二个配送方式,直接通过钩子监听支付方式选择状态,动态修改目标配送方式的运费即可,以下是具体实现步骤(以WooCommerce为例,这是最常见的电商场景):

1. 获取目标配送方式ID

进入WooCommerce后台 → 配送 → 配送区域,编辑你创建的3.5€快递配送方式,查看浏览器地址栏,URL中post=后面的数字就是该配送方式的ID(比如post=456,ID就是456)。

2. 添加自定义代码

将以下代码添加到你的WordPress子主题functions.php文件中,或者创建一个自定义插件来存放代码(推荐后者,避免主题更新丢失代码):

add_filter( 'woocommerce_package_rates', 'adjust_cod_shipping_rate_for_specific_method', 10, 2 );
function adjust_cod_shipping_rate_for_specific_method( $rates, $package ) {
    // 替换为你的目标配送方式ID
    $target_shipping_id = '456';
    // 货到付款支付方式的slug,默认是cod,可在支付设置中确认
    $cod_payment_slug = 'cod';

    // 检查当前选中的支付方式是否为货到付款
    if ( WC()->session->get('chosen_payment_method') === $cod_payment_slug ) {
        foreach ( $rates as $rate_key => $rate ) {
            // 匹配目标配送方式(rate_key格式为 配送方式ID:实例ID,所以用strpos判断)
            if ( strpos( $rate_key, $target_shipping_id ) !== false ) {
                // 将运费调整为5€
                $rates[$rate_key]->cost = 5;
                // 重置税费(如果不需要调整税费可保留此行,确保显示准确)
                $rates[$rate_key]->taxes = array();
                // 重置元数据并保存,避免缓存影响
                $rates[$rate_key]->reset_meta_data();
                $rates[$rate_key]->save();
            }
        }
    }
    return $rates;
}

// 监听支付方式切换事件,刷新配送费率
add_action( 'wp_footer', 'refresh_shipping_on_payment_switch' );
function refresh_shipping_on_payment_switch() {
    if ( is_checkout() && ! is_wc_endpoint_url() ) {
        ?>
        <script>
            jQuery(document).ready(function($) {
                $('form.checkout').on('change', 'input[name="payment_method"]', function() {
                    $(document.body).trigger('update_checkout');
                });
            });
        </script>
        <?php
    }
}

3. 配置与测试

  • 替换代码中的$target_shipping_id为你实际拿到的配送方式ID
  • 确认货到付款的slug是否为cod:进入WooCommerce后台 → 支付 → 编辑货到付款,URL中section=后面的字符串就是slug,若不是则修改$cod_payment_slug的值
  • 进入WooCommerce状态页面,点击「清除缓存」按钮,避免旧的配送费率缓存影响效果
  • 前端测试:进入结账页面,先选择目标配送方式,切换支付方式为货到付款,查看运费是否自动变为5€;切换回其他支付方式,运费应恢复为3.5€

内容的提问来源于stack exchange,提问作者Chris Rontos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:28:18