1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

WooCommerce: Versand nur ab einem Mindestbestellwert

Dieses Thema im Forum "Onlineshop mit WordPress" wurde erstellt von Rasmus Bürger, 10. November 2016.

  1. Rasmus Bürger

    Registriert seit:
    9. November 2016
    Beiträge:
    5
    Zustimmungen:
    0
    Liebe Forumsteilnehmer,

    für unseren Shop http://schwarze-kuh.farm/bestellen/shop/ möchte ich gerne die Funktion einrichte, dass der Versand erst ab einem Mindestbestellwert von 50 € als Versandoption verfügbar wird. Die Optionen "Abholung vor Ort" und "Versandkostenfreie Lieferung" ab einem Bestellwert von 150 € sollen davon unberührt bleiben. Schön wäre auch eine Benachrichtigung auf der Warenkorb und Kassen Seite, die den Kunden informiert, dass der Versand erst ab diesem Mindestbestellwert verfügbar ist.

    Bisher habe ich für alle Varianten einen Mindestbestellwert von 50 € eingerichtet, und zwar nach der Methode die auf der Seite https://www.sitepoint.com/minimum-checkout-requirements-in-woocommerce/ beschrieben wird.

    Der angepasste Code in der functions.php des Child-Themes sieht wie folgt aus:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Bei der Suche im Forum bin ich auf den Post [POST]637714[/POST] von mensmaximum gestoßen, in dem beschrieben wird, wie bestimmte Zahlungsmethoden erst ab einem Mindestsbestellwert verfügbar werden. Ich denke das ist schon der richtige Ansatz, leider reichen meine PHP-Kenntnisse und mein Wissen um die WooCommerce Variablen und Methoden nicht aus um den Code an meine Bedürfnisse anzupassen. Die Code sieht wie folgt aus:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ich wäre sehr dankbar dafür, wenn mir jemand ein ähnliches Problem schon lösen konnte und mir die Lösung mitteilen kann.

    Viele Grüße
    Rasmus

    Seite: http://schwarze-kuh.farm/bestellen/shop/
    Wordpressversion: WordPress 4.6.1
    Theme: Edge 1.1.1.0
    Plugins: WooCommerce 2.6.4
    WooCommerce Germanized 1.7.1
     
  2. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Wenn man das direkt in den verfügbaren Versandmethoden durchführen will, muss das seit WooCommerce 2.6 mit dem Filter "woocommerce_package_rates" passieren.

    Ansatz (weder getestet noch geprüft):

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. Rasmus Bürger

    Registriert seit:
    9. November 2016
    Beiträge:
    5
    Zustimmungen:
    0
    Super, funktioniert. Vielen Dank.

    Der Vollständigkeit halber und zur Dokumentation poste ich hier noch die Modifikationen für meinen spezifischen Anwendungsfall. Kann sein, dass das der Code für die Benachrichtigung überflüssig bzw. schlecht implementiert ist. Ich bin da für Änderungsvorschläge und Kritik offen.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  4. mikeSo

    mikeSo Member

    Registriert seit:
    16. November 2008
    Beiträge:
    15
    Zustimmungen:
    0
    Super vielen Dank fuer den KLEINEN Workaround!

    Aber diese Anpassung, stopp/verhindert nicht die Bestellung - Richtig?!?

    Habe es eingebaut und die Meldung funktioniert, aber ich kann dennoch die Bestellung weiter fuehren/abschliessen.

    Oder habe ich irgend etwas uebersehen?

    Wenn nicht - wie kann man diese Anpassung so machen, dass der Kunde erst weiter kommt, wenn der Bestellwert hoeher als der Mindestbestellwert liegt?

    Vielen Dank fuers lesen und antworten!

    G, Mike
     
  5. mikeSo

    mikeSo Member

    Registriert seit:
    16. November 2008
    Beiträge:
    15
    Zustimmungen:
    0
    Ich habe etwas aufgestoebert... ;)

    http://www.edv-mediaservice.de/2016/06/02/mindestbestellwert-ohne-plugin/

    Die machen das so:
    (... wie fuegt man hier einen Code-Block noch einmal ein?)


    add_action('the_post','minimum_order_func',10);

    function minimum_order_func(){
    global $woocommerce;
    if (is_checkout()){
    $minorder = 50;
    if( $woocommerce->cart->subtotal != 0)
    if( $woocommerce->cart->subtotal < $minorder){
    wc_add_notice( sprintf(__('Sie haben den Mindestbestellwert ' . $minorder . ' Euro noch nicht erreicht ! ', 'woocommerce'), home_url()) );
    wp_redirect( get_permalink( woocommerce_get_page_id( 'cart' ) ) );
    exit;
    }
    }
    }


    Ergebnis: Der Kunde wird nicht weiter gelassen, bis der Mindestbestellwert ueberschritten ist! ;)

    ###############

    Zum Schluss - Aber mal im ernst, eigentlich schon SemiKlasse - das man das NICHT ueber das Woocommerce-Backend (ohne Zusatz-Plugin) erledigen kann!
     
    #5 mikeSo, 24. November 2016
    Zuletzt bearbeitet: 24. November 2016
  6. mikeSo

    mikeSo Member

    Registriert seit:
    16. November 2008
    Beiträge:
    15
    Zustimmungen:
    0

    JA und wenn Ihr eine (echte, rote) Fehlermeldung bekommen moechtet, dann schreibt folgendes:
    STATT:
    wc_add_notice( sprintf(__('Sie haben den Mindestbestellwert ' . $minorder . ' Euro noch nicht erreicht ! ', 'woocommerce'), home_url()) );

    DIES HIER:
    wc_add_notice( sprintf(__('Sie haben den Mindestbestellwert ' . $minorder . ' Euro noch nicht erreicht ! ', 'woocommerce'), home_url()) ,'error' );


    HIER KOMPLETT:
    add_action('the_post','minimum_order_func',10);

    function minimum_order_func(){
    global $woocommerce;
    if (is_checkout()){
    $minorder = 50;
    if( $woocommerce->cart->subtotal != 0)
    if( $woocommerce->cart->subtotal < $minorder){
    wc_add_notice( sprintf(__('Sie haben den Mindestbestellwert ' . $minorder . ' Euro noch nicht erreicht ! ', 'woocommerce'), home_url()) ,'error' );
    wp_redirect( get_permalink( woocommerce_get_page_id( 'cart' ) ) );
    exit;
    }
    }
    }


    ... ;)
     
  7. Rasmus Bürger

    Registriert seit:
    9. November 2016
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo mikeSo,

    ja, die bisherige Modifikation gibt dem Kunden nur eine Benachrichtigung aus, dass der Mindestbestellwert für eine Lieferung noch nicht erreicht ist. Allerdings bieten wir ja auch die Option der Abholung vor Ort an, und für die ist der Mindestbestellwert irrelevant.
    Die Modifikation von mensmaximus entfernt daher die Option "Lieferung" wenn der Mindestbestellwert nicht erreicht ist, lässt aber dem Kunden die Möglichkeit zur Abholung vor Ort weiter offen.

    VG Rasmus
     
  8. Rasmus Bürger

    Registriert seit:
    9. November 2016
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo mensmaximus,

    nochmal vielen Dank für die Lösung, sie funktioniert bisher sehr gut. Ich habe leider das Problem, dass bei einigen Kunden der Fehler
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    auf der Checkoutsite mit der Angabe der Rechnungsadresse auftritt (siehe Screenshot), und es dann nicht möglich ist zum nächsten Bestellschritt zu kommen. Ein komplettes Neuladen der Seite vom Server, oder die Verwendung eines anderen Browsers, behebt diesen Fehler meist.
    Ich habe dem ein wenig nachrecherchiert und habe bisher nur gefunden, dass das an der Reihenfolge in der die Filter/Funktionen aufgerufen werden liegen kann.
    Muss ich demnach die 100 im Filter verändern? Und muss diese erhöht oder verringert werden?
    Ich hoffe die Frage ist jetzt nicht allzu blöd. Ich muss mal wirklich anfangen mich intensiver mit PHP zu beschäftigen.
    Vielen Dank und viele Grüße
    Rasmus

    schw-kuh-fehler-shop.jpg
     
  9. sefre

    sefre Member

    Registriert seit:
    15. März 2008
    Beiträge:
    7
    Zustimmungen:
    0
    Sorry das ich das Thema wieder ausgrabe aber ich habe das selbe Problem mit einer kleinen Erweiterung.

    Wie kann ich den Mindestbestellwert von der Versandzone abhängig machen?

    Es geht um einen Lieferservice der je nach PLZ-Gebiet unterschiedliche Mindestbestellwerte hat. In den Versandzonen habe ich bereits diese Gebiete angelegt und jeweils mit Versandpauschale, kostenfreie Lieferung ab X€ und kostenlose Abholung vor Ort angelegt.

    Nun fehlt nur noch der Mindestbestellwert der eben auch abhängig von der Versandzone variiert.

    Ich denke ich muss diesen Teil des codes modifizieren, richtig?

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  10. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Das Problem solcher "Wünsche" ist, dass sie nicht praktikabel sind. Die Versandzone wird erst mit Eingabe der Adresse bekannt. Teilt man dem Kunden dann erst mit, dass es einen Mindestbestellwert gibt ist er sauer. Vernünftig lösen kann man das nur mit einer Abfrage der Lieferanschrift bevor der Einkaufsvorgang beginnt. Will man das tatsächlich erst im Checkout erledigen geht das nicht mit einer reinen PHP Lösung. Es muss als Ajax Lösung (jQuery + PHP) eingebaut werden. Allemal schlauer wäre aber ein genereller Hinweis auf die Mindestbestellmengen an prominenter Stelle mit Mindermengenzuschlag, falls die Mindestbestellwerte nicht erreicht werden (Pizzadienst ...). Das kann man Plugins für Gebühren (z.B. Bolder Fees) erledigen.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden