✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Anleitung zum Hinzufügen benutzerdefinierter Gebühren zur WooCommerce-Kaufabwicklung per Code

142

Es gibt einige Fälle, in denen Sie möglicherweise eine Gebühr zu den Warenkorbsummen hinzufügen müssen. Manchmal nur, wenn eine bestimmte Bedingung erfüllt ist, z. B. abhängig von den Warenkorbsummen oder dem Versandort. Mit WooCommerce ist das Hinzufügen einer Gebühr ziemlich einfach – viel einfacher als das Hinzufügen eines Rabatts. In diesem Beitrag erfahren wir, wie man WooCommerce eine benutzerdefinierte Gebühr hinzufügt.

WooCommerce hat eine eingebaute Funktion im Warenkorbobjekt zum Hinzufügen von Gebühren. Alles, was Sie brauchen, ist, sich an die richtige Aktion zu hängen und mit dem bereitgestellten Warenkorbobjekt eine Funktion aufzurufen, um eine Gebühr hinzuzufügen. WooCommerce zeigt automatisch Gebühren im Warenkorb und an der Kasse an. Sie bestimmen Bezeichnung und Höhe der Gebühr.

Anleitung zum Hinzufügen benutzerdefinierter Gebühren zur WooCommerce-Kaufabwicklung per Code

Es ist wichtig zu beachten, dass der Gebührenbetrag nicht negativ sein kann – wodurch der Kunde einen Rabatt erhält. Dieser „Hack” hat früher in älteren WooCommerce-Versionen funktioniert, jetzt aber nicht mehr.

Kommen wir zu den Details des Codes! Der einzige Haken, um den Sie sich Sorgen machen müssen, ist woocommerce_cart_calculate_fees. Innerhalb dieses Hooks können Sie das Cart-Objekt abrufen, indem Sie aufrufen WC()->cart. Mit diesem Objekt können Sie aufrufen add_fee(), das vier Parameter akzeptiert (Sie brauchen wahrscheinlich nur die beiden ersten); add_fee($fee_name, $amount_in_float, $taxable_boolean, $tax_class_string). Die ersten beiden sind selbsterklärend. Der dritte Parameter ist ein boolescher Wert, der entscheidet, ob die Gebühr steuerpflichtig ist oder nicht. Und der vierte dient der Bereitstellung einer Steuerklasse für die Gebühr (wenn der dritte Parameter wahr ist). Für die Standardsteuerklasse kann es jedoch leer gelassen werden.

Hinzufügen einer festen Gebühr

Das Hinzufügen einer benutzerdefinierten Gebühr erfolgt in seiner einfachsten Form wie folgt:

Der erste Schritt besteht darin, das Hinzufügen einer Gebühr zu verhindern, wenn wir in der Verwaltung sind oder wenn Ajax ausgeführt wird. Als nächstes rufen wir add_fee()das Cart-Objekt auf. Dadurch wird eine Gebühr namens „Eine kleine Gebühr” mit dem Wert 5 hinzugefügt. Der Wert wird in der Währung angegeben, die Sie in Ihrem Geschäft haben. Wenn die Währung des Shops auf Dollar eingestellt ist, werden sie zu 5 $. Passen Sie den Namen und die Menge an Ihre Bedürfnisse an.

Hinzufügen einer Gebühr als Prozentsatz der Warenkorbsummen

Wenn Sie möchten, dass der Gebührenbetrag ein Prozentsatz der Warenkorbsumme ist, müssen Sie ihn nur anders berechnen. Denken Sie daran, dass wir durch Aufrufen immer Zugriff auf das Warenkorbobjekt haben und von dort WC()->cartdie Gesamtsummen abrufen können.

Der obige Code fügt eine Gebühr hinzu, die sich auf 5 % der Gesamtsumme des Einkaufswagens beläuft, die sich aus der Gesamtsumme der Einkaufswagenartikel (get_cart_contents_total()) plus den Versandkosten des Einkaufswagens (get_shipping_total()) zusammensetzt. Passen Sie die Rate und die Summen an, die Sie einbeziehen oder ausschließen möchten, was Sie benötigen.

Das ist also ziemlich nett, aber in einigen Fällen möchten wir möglicherweise anpassen, wann eine Gebühr hinzugefügt werden soll. Vielleicht möchten Sie eine Gebühr nur für eine bestimmte Versandmethode, Zahlungsmethode oder basierend auf der Gesamtsumme des Warenkorbs hinzufügen. Der Prozess ist derselbe, wir fügen die Gebühr nur hinzu, wenn unsere Bedingungen erfüllt sind.

Hinzufügen einer Gebühr in Abhängigkeit von den Warenkorbsummen

Angenommen, Sie wollten nur dann eine Gebühr hinzufügen, wenn die Warenkorbsummen unter einem bestimmten Betrag liegen. Angenommen, Sie möchten eine Gebühr für die Bearbeitung kleiner Beträge hinzufügen. Du könntest es so machen:

Verwenden Sie diese Option WC()->cart->get_cart_contents_total(), um die Float-Zahl des Gesamtbetrags des Einkaufswagens ohne Versand zu erhalten. (Wenn Sie auch den Versand einschließen möchten, sehen Sie oben unter Hinzufügen der prozentualen Gebühr nach, wie Sie die Gesamtversandkosten erhalten). Dann machen Sie Ihre Vergleiche.

Sie können es auch umdrehen und entscheiden, eine Gebühr hinzuzufügen, wenn der Einkaufswagen ein bestimmtes Limit überschritten hat.

Hinzufügen einer Gebühr je nach Versandort

Sie können auch je nach Versandort eine Gebühr hinzufügen, z. B. nach Land. Ähnlich wie beim Abrufen des Warenkorbobjekts können wir es WC()->customerfür das Kundenobjekt verwenden. Denken Sie daran, dass, wenn der Kunde nicht eingeloggt ist und noch nicht an der Kasse angekommen ist und seine Adresse eingegeben hat, die Werte des Kundenobjekts leer sind oder die in Ihrem Geschäft festgelegten Standardwerte.

Sie müssen den Ländercode kennen – hier ist eine nette Ländercode-Referenz. Hier ist ein Beispiel für das Hinzufügen einer Gebühr, wenn der Kunde aus Norwegen kommt.

Hinzufügen einer Gebühr je nach gewählter Versandart

Die Versandmethode zu ermitteln ist etwas schwieriger, da sie von der Sitzung des Benutzers abhängt und nicht in einem „schön verständlichen Format” vorliegt. Die aktuell gewählte Versandart können Sie mit abrufen WC()->session->get('chosen_shipping_methods'). Beachten Sie, dass dort „Methoden” und nicht „Methode” steht, also wird ein Array zurückgegeben. Normalerweise enthält das Array ein Element, wobei jedes Element aus Zeichenfolgen mit Versand-ID, einem Doppelpunkt und einer ID dahinter besteht. Ich empfehle, PHP-String-Methoden zu verwenden, um zu prüfen, ob der String beispielsweise die ID enthält strpos()und nicht, ob sie gleich ist.

Hinzufügen einer Gebühr je nach gewählter Zahlungsmethode

Wenn Sie abhängig vom ausgewählten Zahlungsgateway eine Gebühr hinzufügen möchten, können Sie das aktuell ausgewählte Zahlungsgateway mit abrufen WC()->session->get('chosen_payment_method')und mit seinem Namen vergleichen (z. B. für Paypal würde es zurückgeben 'paypal'). Möglicherweise stellen Sie jedoch fest, dass die Gebühr nicht dynamisch hinzugefügt oder entfernt wird, wenn der Kunde im Checkout zwischen Zahlungsgateways wechselt. Sie müssen also zusätzliches Javascript hinzufügen, um sicherzustellen, dass WooCommerce den Warenkorb aktualisiert, damit Ihre Gebühr konsistent funktioniert.

Um das Javascript hinzuzufügen, hängen wir woocommerce_review_order_before_paymentes direkt vor dem Zahlungsfeld in der Kasse ein und geben das Inline-Skript aus. Der Code löst lediglich den Hook von WooCommerce aus, update_checkoutwenn die Auswahl der Zahlungsmethode geändert wird. Dadurch wird sichergestellt, dass bei jeder Aktualisierung des Warenkorbs alle erforderlichen PHP-Methoden und -Hooks ausgeführt werden (einschließlich des Gebühren-Hooks).

Hinzufügen einer Gebühr, je nachdem, welche Produkte sich im Warenkorb befinden

Ich habe es bereits erwähnt, aber ich erwähne es noch einmal: Sie haben vollen Zugriff auf das Warenkorbobjekt mit WC()->cart, sodass Sie den Inhalt des Warenkorbs nach einer bestimmten Produkt-ID durchsuchen und eine Gebühr hinzufügen können, falls diese im Warenkorb vorhanden ist.

Bei Verwendung WC()->cart->get_cart_contents()wird ein Array aller Produkte im Warenkorb zurückgegeben. Sie können dies entweder mit einer einfachen Schleife durchlaufen foreachund jedes Produkt auf Ihren gewünschten Zustand überprüfen, oder wenn Sie einfach nach IDs suchen möchten, können Sie alle Produkt-IDs in einer Zeile wie folgt extrahieren:

Das folgende Beispiel zeigt, wie Sie eine Gebühr hinzufügen können, je nachdem, ob der Warenkorb ein Produkt mit einer bestimmten ID enthält:

Sie können ähnliche Vorgänge auch zum Extrahieren von Mengen verwenden, wenn Sie eine Gebühr hinzufügen müssen, wenn ein Kunde eine wirklich große Menge von etwas hinzufügt.

Abschließend

Dieser Beitrag hat Ihnen gezeigt, wie Sie eine benutzerdefinierte Gebühr hinzufügen, und anhand von fünf Beispielen, wie Sie eine Gebühr abhängig von bestimmten Bedingungen hinzufügen. Diese Bedingungen waren alles, was mir begegnet ist und an das ich denken konnte, und sie sollten zumindest Hinweise darauf geben, wie Sie an Informationen gelangen, um Ihre Bedingungen weiter anzupassen. Lassen Sie mich wissen, ob sie bei Ihnen funktioniert haben oder ob Sie eine andere Erkrankung gefunden haben, an die ich nicht gedacht habe!

Aufnahmequelle: awhitepixel.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen