Woocommerce - Versandkosten verstecken worpdress

Unerklärlicherweise besitzt das Plug-In „Woocommerce“ nicht die Funktion, dass beim Erreichen eines bestimmten Warenwertes nur die versandkostenfreie Lieferart angezeigt wird. Im Normalfall wird neben dieser auch der Standardversand angezeigt. Diese Darstellung ist für die Kunden meist verwirrend und sollte aus Gründen der Benutzerfreundlichkeit geändert werden.

 

 

Um die Versandkosten zu verstecken, ist es als erstes nötig ein sogenanntes „Child-Theme“ im Wordpress Backend zu erstellen. Wie dies funktioniert erklären wir Hier(Der Link ist noch ein Platzhalter.

 

Als nächstes ist es wichtig den Debug-Modus von Woocommerce zu aktivieren, damit uns der Cache bei unserer Arbeit nicht beeinträchtigt. Um den Debug-Modus zu aktivieren geht man zu

 

Woocommerce --> Versand --> Versandmöglichkeiten

 

und macht den Haken bei Debug Modus.

 

Als nächsten Schritt rufen wir unter

 

wp-content\themes\Der_Name_Ihres_Child_Themes

 

Die functions.php Datei auf, und fügen den folgenden Code hinzu:

 

<?php

/**

* muenchen-child-theme functions and definitions

*

*/

/**

* Hide shipping rates when free shipping is available.

* Updated to support WooCommerce 2.6 Shipping Zones.

*

* @param array $rates Array of rates found for the package.

* @return array

*/

function my_hide_shipping_when_free_is_available( $rates ) {

$free = array();

$is_free_shipping=0;

foreach ( $rates as $rate_id => $rate ) {

if ('legacy_free_shipping' === $rate->method_id) {

$is_free_shipping=1;

}

}

if($is_free_shipping===1) {

foreach ( $rates as $rate_id => $rate ) {;

if legacy_free_shipping="" rate-="">method_id ||'legacy_local_delivery' === $rate->method_id) {

$free[ $rate_id ] = $rate;

}

}

}

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

}

add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

?

 

 

Und speichern diese ab.

 

Zur Erklärung des Codes:

 

In der ersten Zeile des Codes erzeugen wir die function my_hide_shipping_when_free_is_available( $rates ), und erschaffen einen Array Namens $free. Als nächstes legen wir fest, dass die Variable falsch ist. In der nächsten Zeile sagen wir, dass das Array $rates (in diesem sind die einzelnen Versandarten aufgelistet) verwendet werden soll, und der Key $rate_id (Der Name einer Versandart) und der Value $rate (Die Eigenschaften der jeweiligen Versandart als Objekt) ausgefüllt werden soll. Im nächsten Schritt definieren wir unsere Bedingung. Hier steht: Wenn legacy_free_shipping (Versandkostenfrei) den richtigen Value hat (Z.b. den Warenwert, welcher zur versandkostenfreien Lieferung berechtigt), dann wird $is_free_shipping wahr.

 

Ist dies der Fall, wird ein neues Array mit den gleichen Key und Value wie oben, abgefragt. Der Unterschied zu oben ist jetzt, dass wir bei unserer Bedingung ein oder (||) definiert haben, welcher legacy_local_delivery (Expressversand) abfragt. In der folgenden Zeile sehen wir das eigentliche Array, in dem die Abfragen gemacht werden.

 

In der vorletzten Zeile wartet return ! empty ( $free ) auf die $free Variable. Diese wird nur belegt, wenn zuvor $is_free_shipping=1 ist, und somit unsere zweite Bedingung startet. Ist dies Fall wird die versandkostenfreie und Express Lieferung angezeigt. Wenn zuvor aber $is_free_shipping=0 war, wird ganz normal der Standardversand und die Express Lieferung angezeigt.

 

Nach einem erneuten Laden der Seite, sollten die Änderungen übernommen sein, und der Standardversand beim Erreichen des Mindestbestellwertes für versandkostenfreie Lieferung ausgeblendet werden.