WooCommerce में, मैं कार्ट उप-योग के 10% के आधार पर एक प्रगतिशील शिपिंग लागत निर्धारित करने की कोशिश कर रहा हूं, जिसमें न्यूनतम लागत $ 5 है, अधिकतम लागत $ 11 है।

मेरा कोड प्रयास यहां दिया गया है:

add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates', 10, 2 );
function woocommerce_package_rates( $rates, $package ) {
    // Make sure flat rate is available
    if ( isset( $rates['flat_rate:24'] ) ) {
        // Set the cost to $5
        $rates['flat_rate:24']->cost = 5;
    }
    $cart_subtotal = $WC()->cart->subtotal
    if ($cart_subtotal >50)

    $percentage = 0.10;  // Percentage (10%) in float
    $percentage_fee = ( WC()->cart->subtotal >+ WC()->cart->get_shipping_total()) * $percentage;
    }
 
    });
    return $rates;
}

यह कोड वेबसाइट पर एक गंभीर त्रुटि देता है। मैं वर्डप्रेस कस्टम कोडिंग के लिए काफी नया हूं जैसा कि आप शायद नीचे दिए गए कोड से बताएंगे।

इसके अलावा, मैं प्रदर्शित लेबल को "फ्लैट रेट" के बजाय "यूएसपीएस" दिखाना चाहता हूं।

उदाहरण के लिए, यदि कार्ट का उप-योग $60 है, तो उनसे $6 फ्लैट दर शिपिंग लागत (उप-योग का 10%) शुल्क लिया जाएगा।

मैं क्या खो रहा हूँ या गलत कर रहा हूँ?

2
Brenda Deming 12 अगस्त 2020, 17:32

1 उत्तर

सबसे बढ़िया उत्तर

आपके प्रदान किए गए कोड में बहुत सी गलतियां हैं... निम्नलिखित आपको कार्ट उप-कुल प्रतिशत के आधार पर 5$ से 11$ अधिकतम तक शिपिंग लागत निर्धारित करने की अनुमति देगा।

सबसे पहले आपको अपनी फ्लैट दर सेटिंग में 5 (और लेबल के रूप में "UPS") की लागत निर्धारित करनी होगी।

enter image description here

फिर इस कोड का प्रयोग करें:

add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates', 10, 2 );
function woocommerce_package_rates( $rates, $package ) {
    $max_cost   = 11; // Here set the max cost for the shipping method
    $percentage = 10; // Percentage to apply on cart subtotal
    $subtotal   = WC()->cart->get_subtotal(); // Cart subtotal without taxes

    // Loop through shipping rates
    foreach ( $rates as $rate_key => $rate ) {
        // Targetting specific flate rate shipping method
        if ( 'flat_rate:14' === $rate_key ) {
            $has_taxes = false;
            $base_cost = $rate->cost; // 5$ from this shipping method cost setting
            $new_cost  = $subtotal * $percentage / 100; // Calculation

            if( $new_cost > $base_cost ) {
                // 1. Rate cost
                if ( $new_cost < $max_cost ) {
                    $rates[$rate_key]->cost = $new_cost;
                    $rate_operand = $new_cost / $base_cost; // (for taxes if enabled)
                } else {
                    $rates[$rate_key]->cost = $max_cost;
                    $rate_operand = $max_cost / $base_cost; // (for taxes if enabled)
                }
                // 2. Taxes rate cost (if enabled)
                foreach ($rates[$rate_key]->taxes as $key => $tax){
                    if( $tax > 0 ){
                        // New tax calculated cost
                        $taxes[$key] = $tax * $rate_operand;
                        $has_taxes = true;
                    }
                }
                // Set new taxes cost
                if( $has_taxes ) {
                    $rates[$rate_key]->taxes = $taxes;
                }
            }
        }
    }
    return $rates;
}

कोड आपके सक्रिय चाइल्ड थीम (या सक्रिय थीम) के functions.php फ़ाइल में जाता है। परीक्षण किया और काम किया।

शिपिंग कैश रीफ़्रेश करें:

  1. यह कोड पहले से ही आपके functions.php फ़ाइल में सहेजा गया है।
  2. शिपिंग ज़ोन सेटिंग्स में, किसी भी शिपिंग विधि को अक्षम/सहेजें, फिर वापस/सहेजें सक्षम करें।

    आप कर चुके हैं और आप इसका परीक्षण कर सकते हैं।
1
LoicTheAztec 12 अगस्त 2020, 19:18