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

如何在WooCommerce中根据商品Size属性为每件商品收取对应费用?

如何在WooCommerce中根据商品Size属性为每件商品收取对应费用?

我来帮你搞定这个需求——根据商品的Size属性给每件商品加对应费用对吧?先看看你写的代码框架,我帮你补全并解释清楚怎么用:

首先是完整的可运行代码,你可以直接拿去用,按需调整参数就行:

add_action( 'woocommerce_cart_calculate_fees', 'wpf_wc_add_cart_fees_by_product_attribute' );

if ( ! function_exists( 'wpf_wc_add_cart_fees_by_product_attribute' ) ) {
    function wpf_wc_add_cart_fees_by_product_attribute( $cart ) {
        if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

        // 这里定义属性slug对应的单件费用,你可以按需修改金额和属性值
        $fees = array(
            'size_large' => 5.00,    // 大码每件收5元(或美元,取决于你的店铺设置)
            'size_medium' => 3.00,   // 中码每件收3元
            'size_small' => 1.00     // 小码每件收1元
        );

        $total_fee = 0;

        // 遍历购物车里的每一件商品
        foreach ( $cart->get_cart() as $cart_item ) {
            $product = $cart_item['data'];
            // 获取商品的Size属性值(注意这里的属性slug要和你后台设置的一致)
            $size_attr = $product->get_attribute('size');
            
            // 如果当前商品的尺码在我们定义的费用规则里,就累加费用
            if ( array_key_exists( $size_attr, $fees ) ) {
                $total_fee += $fees[$size_attr] * $cart_item['quantity'];
            }
        }

        // 如果总附加费大于0,就添加到购物车结算项里
        if ( $total_fee > 0 ) {
            $cart->add_fee( '尺码附加费', $total_fee );
        }
    }
}

接下来给你划几个关键注意点,避免踩坑:

  • 钩子选对了:woocommerce_cart_calculate_fees是WooCommerce官方推荐用来添加自定义费用的钩子,只会在计算购物车费用时触发,很安全。
  • 后台判断:开头的is_admin()判断是为了防止在WordPress后台操作时误触发这个函数,只有前端用户购物或者AJAX更新购物车时才会执行。
  • 属性要匹配:你得确保代码里的get_attribute('size')和你后台商品属性的slug完全一致!比如如果你的Size属性slug是product_size,就把这里改成get_attribute('product_size'),不然拿不到属性值。
  • 费用规则自定义:$fees数组里的键就是你商品Size属性的选项slug,值是单件对应的费用,你可以随便加更多尺码的规则,比如加个'size_xl' => 7.00这样的。
  • 费用名称:add_fee的第一个参数是显示给用户的费用名称,你可以改成更贴合店铺的,比如“大码服务费”之类的。

最后提醒下:这段代码可以添加到你当前主题的functions.php文件末尾,或者用专门的自定义代码插件(比如Code Snippets)来添加,千万别直接改WooCommerce的核心文件,不然下次插件更新你的代码就没了!

备注:内容来源于stack exchange,提问作者Navi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:02:59