代码之家  ›  专栏  ›  技术社区  ›  Vincenzo Di Gaetano

如果值为0,则隐藏自定义运费成本

  •  1
  • Vincenzo Di Gaetano  · 技术社区  · 7 年前

    在Woocommerce中,我使用收费API向购物车添加了额外的运费。

    我的代码是:

    add_action( 'woocommerce_cart_calculate_fees', 'pt_add_handling_fee' );
    function pt_add_handling_fee() {
    
        $title = 'Maggiorazione Isole & Calabria';
    
        global $woocommerce;
        $peso_totale = $woocommerce->cart->cart_contents_weight;
        $provincia = $woocommerce->customer->get_shipping_state();
        // echo 'weight'.$woocommerce->cart->cart_contents_weight;
        // echo 'price'.$woocommerce->cart->subtotal;
    
        // Maggiorazione 5€ ogni 100kg per la Sardegna
        if ($peso_totale > 99 && ($provincia == "CA" or $provincia == "NU")) {
            $fee = $peso_totale / 100 * 5;
        }
        // Maggiorazione 3€ ogni 100kg per la Sicilia
        if ($peso_totale > 99 && ($provincia == "AG" or $provincia == "CL")) {
            $fee = $peso_totale / 100 * 3;
        }
        // Maggiorazione 2€ ogni 100kg per la Calabria
        if ($peso_totale > 99 && ($provincia == "CZ" or $provincia == "CS")) {
            $fee = $peso_totale / 100 * 2;
        }
    
         $woocommerce->cart->add_fee( $title, $fee, TRUE, 'standard' );
    }
    

    所以我对一些省份征收附加费,如果总重量超过99公斤。

    但问题是,对于其他省份,收费标准仍然是“0”。

    当大车总重量超过99公斤时,如何使这项费用只适用于确定的省份?

    1 回复  |  直到 7 年前
        1
  •  1
  •   LoicTheAztec    7 年前

    你的代码有点过时 woocommerce_cart_calculate_fees 动作钩有 WC_Cart 对象作为可用参数。

    global $woocommerce 具有 $woocommerce->cart $woocommerce->customer 现在简单地替换为:

    • WC()->cart 对象)
    • WC()->customer (以 WC_Customer 对象)

    要使费用仅适用于您的特定条件,请尝试以下重新访问的代码:

    add_action( 'woocommerce_cart_calculate_fees', 'conditional_shipping_surcharge', 10, 1 );
    function conditional_shipping_surcharge( $cart ) {
    
        $targeted_weight = 100; // Define the starting targeted weight
        $cart_weight     = $cart->get_cart_contents_weight();
        $shipping_state  = WC()->customer->get_shipping_state();
        $percent         = 0; // Initializing
    
        if ( $cart_weight >= $targeted_weight ) {
            // 5 € of surcharge per 100kg for Sardinia
            if ( in_array( $shipping_state, array('CA', 'NU') ) ) {
                $percent = 5;
            }
            // 3 € of surcharge per 100kg for Sicily
            elseif ( in_array( $shipping_state, array('AG', 'CL') ) ) {
                $percent = 3;
            }
            // 2 € of surcharge per 100kg for Calabria
            elseif ( in_array( $shipping_state, array('CZ', 'CS') ) ) {
                $percent = 2;
            }
        }
    
        if( $percent > 0 ){
            // Fee calculation
            $fee = $cart_weight * $percent / 100;
    
            // Add calculated fee (Taxable for "standart" default tax class)
            $cart->add_fee( __("Maggiorazione Isole & Calabria", "woocommerce"), $fee, true );
        }
    }
    

    代码放在活动子主题(或活动主题)的function.php文件中。测试和工作。