Die Versandkosten basieren auf dem Gesamtgewicht des Einkaufswagens in Woocommerce 3

Lesezeit: 2 Minuten

Die Versandkosten basieren auf dem Gesamtgewicht des Einkaufswagens in Woocommerce
TomTom

In meinem Woocommerce Webshop habe ich verschiedene Produkte. Ich möchte, dass die Versandkosten nach dem Gesamtgewicht der Artikel im Warenkorb berechnet werden:

  • von 0 zu 6 Kilo kostet es 5 €,
  • von 6 zu 12 Kilo kostet es 9 €

Eigentlich, wenn ich ein Produkt habe, das 1 Kilo wiegt, sind die Versandkosten 5 €aber wenn ich habe 10 Artikel dieses Produktes in meinem Warenkorb, die Versandkosten fallen noch an 5 € (und es sollte sein 9 € stattdessen).

Wie kann ich progressive Versandkosten basierend auf dem Gesamtgewicht des Warenkorbs erhalten?

Die Versandkosten basieren auf dem Gesamtgewicht des Einkaufswagens in Woocommerce
LoicTheAztec

Probieren Sie die folgende Funktion aus, deren “Flatrate”-Kosten basierend auf dem Gesamtgewicht des Einkaufswagens geändert werden.

Wenn Sie die Versandart „Pauschalpreis“ verwenden, müssen Sie einen Referenzversandpreis festlegen mit einfachen Anschaffungskosten statt irgendeiner Formel. Es kann zum Beispiel sein 1. Diese Kosten werden durch meinen Antwortcode ersetzt, dynamisch basierend auf dem Gesamtgewicht des Einkaufswagens.

Möglicherweise müssen Sie “Aktivieren Sie den Debug-Modus” in den allgemeinen Versandeinstellungen unter “Versandoptionen“Tab, Versand-Caches vorübergehend zu deaktivieren.

add_filter('woocommerce_package_rates', 'shipping_cost_based_on_weight', 12, 2);
function shipping_cost_based_on_weight( $rates, $package ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return $rates;

    // HERE define the differents costs
    $cost1 = 5; // Up to 6 Kg
    $cost2 = 9; // Above 6 Kg and below 12 kg
    $cost3 = 9; // Above 12 kg

    // The cart total Weight
    $total_weight = WC()->cart->get_cart_contents_weight();

    // Loop through the shipping taxes array
    foreach ( $rates as $rate_key => $rate ){
        $has_taxes = false;
        // Targetting "flat rate"
        if( 'flat_rate' === $rate->method_id ){
            // Get the initial cost
            $initial_cost = $new_cost = $rates[$rate_key]->cost;

            // Calculate new cost
            if( $total_weight <= 6 ) { // Below 6 Kg
                $new_cost = $cost1;
            }
            elseif( $total_weight > 6 && $total_weight <= 12 ) { // Between 6 and 12 Kg
                $new_cost = $cost2;
            }
            else { // Above 12 Kg
                $new_cost = $cost3;
            }

            // Set the new cost
            $rates[$rate_key]->cost = $new_cost;

            // Taxes rate cost (if enabled)
            $taxes = [];
            // Loop through the shipping taxes array (as they can be many)
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $rates[$rate_key]->taxes[$key] > 0 ){
                    // Get the initial tax cost
                    $initial_tax_cost = $new_tax_cost = $rates[$rate_key]->taxes[$key];
                    // Get the tax rate conversion
                    $tax_rate    = $initial_tax_cost / $initial_cost;
                    // Set the new tax cost
                    $taxes[$key] = $new_cost * $tax_rate;
                    $has_taxes   = true; // Enabling tax
                }
            }
            if( $has_taxes )
                $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

Vergessen Sie nach dem Test nicht, die Option „Debug-Modus aktivieren“ in den Versandeinstellungen zu deaktivieren.

924090cookie-checkDie Versandkosten basieren auf dem Gesamtgewicht des Einkaufswagens in Woocommerce 3

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy