Customize Tax amount in “woocommerce_package_rates” hook

前端 未结 2 1965
自闭症患者
自闭症患者 2021-02-11 06:06

I recently tried to modify all my shipping rates with hook to apply discount.

Here\'s my code :

add_filter( \'woocommerce_package_rates\', \'woocommerce         


        
2条回答
  •  广开言路
    2021-02-11 06:55

    Below code @LoicTheAztec without mistakes:

    add_filter( 'woocommerce_package_rates', 'conditional_shipping_discount', 10, 2 );
        function conditional_shipping_discount( $rates, $packages ) {
    
        $user_id = get_current_user_id();
        if ( ! wc_memberships_is_user_active_member( $user_id, 'silver' ) ) return $rates;
    
        $percent = 30; // 30%
        $discount = 1 - ($percent / 100);
    
        foreach($rates as $rate_key => $rate_values ) {
            // Get original cost
            $original_cost = $rates[$rate_key]->cost;
            // Calculate the discounted rate cost
            $new_cost = $original_cost * $discount;
            // Set the discounted rate cost
            $rates[$rate_key]->cost = number_format($new_cost, 2);
            // calculate the conversion rate (for taxes)
            $conversion_rate = $new_cost / $original_cost;
    
            // Taxes rate cost (if enabled)
            $taxes = array();
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $tax > 0 ){ // set the new tax cost
                    // set the new line tax cost in the taxes array
                    $taxes[$key] = number_format( $tax * $conversion_rate, 2 );
                }
            }
            // Set the new taxes costs
            $rates[$rate_key]->taxes = $taxes;
        }
        return $rates;
    }
    

提交回复
热议问题