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.
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.
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).
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:
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
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