Kostenloser Versand je nach Gewicht und Mindestbestellmenge im Warenkorb

Lesezeit: 4 Minuten

Kostenloser Versand je nach Gewicht und Mindestbestellmenge im Warenkorb
Spion

Bei WooCommerce muss ich ab einem bestimmten Betrag versandkostenfrei haben 250 mit Ausnahme der schweren Produkte, die im Warenkorb enthalten sind.

Weiß jemand was ich tun soll?

Danke.

  • Sie möchten also für einige Artikel im Warenkorb kostenlosen Versand, für andere jedoch nicht?

    – Daniel_ZA

    17. Februar 2017 um 13:40 Uhr

  • Bitte bearbeiten Sie Ihre Frage gemäß einem minimal reproduzierbaren Beispiel

    – Charles-Antoine Fournel

    17. Februar 2017 um 13:52 Uhr

  • Hey, ja, irgendwie. Ich brauche den kostenlosen Versand nur für die leichten Produkte über 250. Ich brauche die schweren Produkte mit Versandkosten über der Grenze von 250.

    – spionieren

    17. Februar 2017 um 15:12 Uhr

  • Sehen Sie sich meine Antwort hier an: stackoverflow.com/questions/15457059/… . Nicht genau gleich, aber sehr ähnlich … sollte Ihnen helfen, in die richtige Richtung zu weisen

    – Daniel_ZA

    20. Februar 2017 um 5:26 Uhr


Kostenloser Versand je nach Gewicht und Mindestbestellmenge im Warenkorb
LoicTheAztec

Dieser benutzerdefinierte Code bleibt erhalten Kostenloser Versand Methode und blendet andere Versandmethoden aus, wenn der Warenkorbbetrag erreicht ist 250 und wenn Produkte sind nicht schwer (weniger als 20 kg hier)… Um den kostenlosen Versand für Bestellungen unter 250 nicht zuzulassen, können Sie dies in Woocommerce einstellen (siehe am Ende).

Zuerst müssen Sie sicherstellen, dass das Gewicht in jedem schweren Produkt eingestellt ist (für einfache oder variable Produkte (in jeder Variation). Hier ist die Zwischensumme des Warenkorbs Ohne Steuer (und Sie können es einfach in Inklusive Steuern ändern).

Geben Sie hier die Bildbeschreibung ein

Dann ist hier diese benutzerdefinierte Hook-Funktion woocommerce_package_rates Filterhaken:

add_filter( 'woocommerce_package_rates', 'conditionally_hide_other_shipping_based_on_items_weight', 100, 1 );
function conditionally_hide_other_shipping_based_on_items_weight( $rates ) {

    // Set HERE your targeted weight (here is 20 kg) <== <== <== <== <==
    $targeted_product_weight = 20;
    
    // Set HERE your targeted cart amount (here is 250)  <== <== <== <== <==
    $targeted_cart_amount = 250;
    // For cart subtotal amount EXCLUDING TAXES
    $passed = WC()->cart->subtotal_ex_tax >= $targeted_cart_amount ? true : false;
    // For cart subtotal amount INCLUDING TAXES (replace by this):
    // $passed = WC()->cart->subtotal >= $targeted_cart_amount ? true : false;
    $light_products_only = true; // Initializing

    // Iterating trough cart items to get the weight for each item
    foreach( $package['contents'] as $cart_item ){
        // Getting the product weight
        $product_weight = $cart_item['data']->get_weight();

        if( !empty($product_weight) && $product_weight >= $targeted_product_weight ){
            $light_products_only = false;
            break;
        }
    }

    // If 'free_shipping' method is available and if products are not heavy
    // and cart amout up to the target limit, we hide other methods
    $free = array();
    foreach ( $rates as $rate_id => $rate ) {
        if ( 'free_shipping' === $rate->method_id && $passed && $light_products_only ) {
            $free[ $rate_id ] = $rate;
            break;
        }
    }

    return ! empty( $free ) ? $free : $rates;
}

Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Dieser Code ist getestet und funktioniert für einfache und variable Produkte…

Sie müssen auch in den WooCommerce-Einstellungen > Versand, für jede Versandzone und für die "Free Shipping" Methode Ihre Mindestbestellmenge:

Geben Sie hier die Bildbeschreibung ein

Sie müssen zwischengespeicherte Versanddaten aktualisieren: Deaktivieren, Speichern und Aktivieren, Speichern verwandter Versandmethoden für die aktuelle Versandzone in den WooCommerce-Versandeinstellungen.

  • Vielen Dank für deine Zeit!! Werden dadurch nur die schweren Artikel Versandkosten pro kg über 250 kosten, während die “leichten” Artikel, die im Warenkorb enthalten sind, versandkostenfrei sind?

    – spionieren

    17. Februar 2017 um 16:43 Uhr

  • Ich verstehe nicht, ich denke, das tut mir leid … also, was wird mit den schweren Artikeln passieren, die mit den leichten auf dem Wagen sind? Werden sie die Versandkosten haben, wie ich will?

    – spionieren

    17. Februar 2017 um 16:54 Uhr

Für kostenlosen Versand ab einem bestimmten Betrag können Sie die integrierte WooCommerce-Option verwenden.

Um den kostenlosen Versand für bestimmte Produkte zu überspringen, können Sie das folgende Snippet verwenden.

 add_filter('woocommerce_package_rates', 'hide_shipping_method_if_particular_product_available_in_cart', 10, 2);

        function hide_shipping_method_if_particular_product_available_in_cart($available_shipping_methods)
        {
            global $woocommerce;

            // products_array should be filled with all the products ids
            // for which shipping method (stamps) to be restricted.

            $products_array = array(
                101,
                102,
                103,
                104
            );

            // You can find the shipping service codes by doing inspect element using
            // developer tools of chrome. Code for each shipping service can be obtained by
            // checking 'value' of shipping option.

            $shipping_services_to_hide = array(
                'free_shipping',

            );

            // Get all products from the cart.

            $products = $woocommerce->cart->get_cart();

            // Crawl through each items in the cart.

            foreach($products as $key => $item) {

                // If any product id from the array is present in the cart,
                // unset all shipping method services part of shipping_services_to_hide array.

                if (in_array($item['product_id'], $products_array)) {
                    foreach($shipping_services_to_hide as & $value) {
                        unset($available_shipping_methods[$value]);
                    }

                    break;
                }
            }

            // return updated available_shipping_methods;
    return
        }

  • Hallo und danke für den Ausschnitt. Ich benötige den kostenlosen Versand nur für die Light-Produkte über 250 . Ich brauche die schweren Produkte mit Versandkosten über der Grenze von 250. Enthält das Snippet das? Vielen Dank

    – spionieren

    17. Februar 2017 um 15:08 Uhr

  • Kostenloser Versand für bestimmte Mindestbeträge kann über Woocommerce festgelegt werden.

    – mujuonly

    17. Februar 2017 um 15:13 Uhr

  • Schwere Produkt-IDs können zum Snippet hinzugefügt werden und den Versand mit geringfügigen Änderungen verwalten

    – mujuonly

    17. Februar 2017 um 15:14 Uhr

  • $products_array = array( 101, 102, 103, 104 meinst du das richtig? Wenn du also die IDs hier hinzufügst, werden die schweren Artikel nur Versandkosten über 250 haben und die leichten werden kostenlos sein, nachdem ich das WC eingestellt habe? Entschuldigung, wenn das so ist klingt dumm

    – spionieren

    17. Februar 2017 um 15:17 Uhr


914830cookie-checkKostenloser Versand je nach Gewicht und Mindestbestellmenge im Warenkorb

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

Privacy policy