kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

WooCommerce: Andere Versandarten entfernen, wenn kostenlose Lieferung verfügbar ist

WooCommerce, die am weitesten verbreitete eCommerce-Erweiterung für WordPress, bietet eine Vielzahl an Einstellmöglichkeiten für den Versand von Waren. Verschiedenen Versandzonen können unterschiedliche Versandarten hinzugefügt werden. In vielen Online-Shops ist es gewünscht, dass alle bzw. ausgewählte Versandarten ausgeblendet werden, sobald die Option »Kostenlose Lieferung« zur Verfügung steht. Diese Funktion bietet WooCommerce nicht über den Administrationsbereich – doch sie lässt sich im Code nachrüsten.

Workshops und Seminare von kulturbanause

Adobe XD, Performance, Responsive Design, Sketch, Visual Prototyping, Web Animationen, Corporate Design …

Jetzt Frühbucher-Rabatte sichern!

Versandarten den Versandzonen hinzufügen

In WooCommerce gibt es standardmäßig drei verschiedene Versandarten:

  • Versandkostenpauschale – ermöglicht es, einen festen Preis für den Versand festzulegen
  • Kostenlose Lieferung – kann durch Gutscheine oder einen Mindestbestellwert ausgelöst werden
  • Abholung vor Ort – der Kunde holt seine Bestellung selbst ab

Diese Versandarten können unter WooCommerce → Einstellungen → Versand → Versandzonen den einzelnen Versandzonen hinzugefügt werden. Jede Versandart kann pro Zone auch mehrfach vergeben werden und mit unterschiedlichen Werten versehen werden. Das ist vor allem dann sinnvoll, wenn man mehrere Versanddienstleiter mit verschiedenen Konditionen hat oder eine Express-Lieferung anbieten möchte.

Eine Berechnung der Versandkosten bezogen auf das Gewicht oder die Anzahl von ausgewählten Artikeln gibt es in WooCommerce standardmäßig nicht.

Andere Versandarten bei kostenloser Lieferung entfernen

Wenn als Versandart »Kostenlose Lieferung« aktiviert ist und ein Kunde des Shops nun entweder den Mindestbestellwert für diese Versandart erreicht hat oder einen Gutschein dafür eingelöst hat kann es teilweise verwirrend sein, dass auch noch alle anderen Versandarten angezeigt werden.
Um diese Versandarten nun für den Kunden des Shops im Bestellprozess auszublenden bzw. zu entfernen fügt einfach folgendes Snippet in eure functions.php oder in ein seitenspezifisches Plugin ein.

Bevor ihr das folgende Snippet in euer Theme integriert, solltest ihr den WooCommerce-Transienten-Cache leeren. Andernfalls kann es passieren, dass eure Änderungen nicht sofort sichtbar sind. Den Cache könnt ihr unter folgendem Pfad löschen: WooCommerce → Status → Werkzeuge → WooCommerce-Transienten → Transients leeren

function kb_hide_shipping_when_free_is_available( $rates ) {
  $free = array();
  foreach ( $rates as $rate_id => $rate ) {
    if ( 'free_shipping' === $rate->method_id ) {
      $free[ $rate_id ] = $rate;
      break;
    }
  }
  return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'kb_hide_shipping_when_free_is_available', 100 );

Ausgewählte Versandarten trotz kostenloser Lieferung anzeigen

Möchtet ihr dem Kunden zusätzlich zur kostenlosen Lieferung noch weitere Versandarten anbieten, beispielsweise die »Abholung vor Ort« oder eine Express-Lieferung, so könnt ihr diese Ausnahmen mit Hilfe des folgenden Snippets lösen. Fügt es einfach in eure functions.php oder in ein seitenspezifisches Plugin ein und passt die Abfrage auf euren Shop an.

Ausnahme mit Hilfe der Versandart hinzufügen

Die Ausnahme, welche Versandarten zusätzlich zur kostenlosen Lieferung angezeigt werden sollen, kann direkt über die ID der Versandart erfolgen. Die IDs für die drei standardmäßigen Versandarten sind »flat_rate«, »free_shipping« und »local_pickup«. Es werden dabei alle Optionen angezeigt, die dieser Versandart zugewiesen sind.

Ausnahme mit Hilfe des Titels einer Versandart-Option

Möchtet ihr eine ganz spezielle Versandart-Option als Ausnahme hinzufügen, jedoch nicht alle Optionen dieser Versandart, bietet es sich an anhand des Titels der Versandart-Option zu filtern.

Im Beispiel entfernen wir die Versandart »Versandkostenpauschale« mit Ausnahme der Versandart-Option »Express-Lieferung«.

function kb_hide_shipping_when_free_is_available( $rates ) {
  $new_rates = array();
  foreach ( $rates as $rate_id => $rate ) {
    if ( 'free_shipping' === $rate->method_id ) {
      $new_rates[ $rate_id ] = $rate;
    }
  }
  if ( ! empty( $new_rates ) ) {
    foreach ( $rates as $rate_id => $rate ) {
      // Ausnahme mit Hilfe der Versandart
      if ('local_pickup' === $rate->method_id ) {
        $new_rates[ $rate_id ] = $rate;
      }
      // Ausnahme mit Hilfe des Titels einer Versandart-Option
      if ('Express-Lieferung' === $rate->label ) {
        $new_rates[ $rate_id ] = $rate;
      }
    }
    return $new_rates;
  }
  return $rates;
}
add_filter( 'woocommerce_package_rates', 'kb_hide_shipping_when_free_is_available', 10, 2 );

Links / Quellen

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Unterstützung bei WooCommerce-Projekten

Unsere WooCommerce Agentur ist auf die Entwicklung maßgeschneiderter WordPress/WooCommerce-Themes und -Websites spezialisiert. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung eines Projekts benötigst, helfen wir gerne weiter.
WooCommerce-Leistungsangebot →

Das könnte dich auch interessieren

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.