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

Anleitung: Preise in WooCommerce per Code ändern

39

Dieser Beitrag ist für Sie, die Code hinzufügen möchten, der die Preise in Ihrem WordPress WooCommerce – Webshop anpasst. Sie können die Preise entweder erhöhen oder rabattieren. Und wie und woher die Anpassungen kommen, hängt ganz von Ihrem Fall ab. Ihr Webshop könnte mit prozentualen Rabatten für jeden registrierten Benutzer, einer benutzerdefinierten globalen Einstellung in den WooCommerce-Einstellungen, einer fest codierten festen Summe oder etwas, das für jedes Produkt oder jede Produktkategorie festgelegt wird, arbeiten.

Ich habe versucht, den Code so allgemein wie möglich zu gestalten, damit Sie ihn an Ihren Fall anpassen können. In meinem Fall stammen die Preisanpassungen aus einem prozentualen Rabatt, der als Benutzermeta hinzugefügt wurde.

Der Code wurde aktualisiert, um für WooCommerce 3.x und höher zu funktionieren. Ich kann nicht garantieren, dass es für niedrigere Versionen funktioniert.

Schritt 1: Erstellen Sie einen Platz für Ihren Code

Der erste Schritt ist einfach; Sie benötigen einen Ort, an dem Sie Ihren Code hinzufügen können. Dies hängt ganz von Ihnen ab. Sie können dies direkt in Ihrem Design functions.phpoder irgendwo in Ihren Plugin-Dateien hinzufügen. Ich arbeite gerne mit Klassen, die alles schön an einem Ort zusammenhalten. Der Einfachheit halber lege ich die Klasse in ein Unterverzeichnis /src/in meinem Design und füge sie ein und instanziiere sie in functions.php.

require_once(get_stylesheet_directory().'/src/ChangePrices.php'); new ChangePrices();

Passen Sie diesen Schritt an Ihren Fall an.

Schritt 2: Entscheiden Sie, wie die Preisanpassungen funktionieren sollen

Dieser Schritt ist Ihnen vielleicht bereits klar – hier müssen Sie wissen, wie und wo Sie die Preisanpassung erhalten. Das Endziel sollte eine Zahl sein, mit der Sie die Preise addieren, subtrahieren, multiplizieren oder dividieren.

In meinem Fall habe ich für jeden Benutzer ein Benutzer-Meta, das einen prozentualen Rabatt enthält. eine Zahl zwischen 0 und 99. Der Site-Administrator kann für jeden Benutzer einen Rabatt festlegen. Ich werde den Code zum Hinzufügen des Benutzer-Meta-Felds nicht zeigen, da dies möglicherweise nichts für Sie ist und dies beispielsweise mit Advanced Custom Fields problemlos möglich ist .

In meiner Klasse behalte ich eine Klassenvariable, die im Konstruktor auf einen Multiplikator gesetzt wird. Je nachdem, ob ein Benutzer eingeloggt ist, hole ich mir den gespeicherten Rabatt vom Benutzer und erstelle daraus einen Multiplikator. Standardmäßig sollte der Multiplikator 1 sein. Preis 1 = gleicher Preis wie zuvor. Aber für einen Rabatt von beispielsweise 10 % wäre der Multiplikator 0,9. Preis 0,9 = Preis mit 10 % Rabatt.

Jetzt, da ich einen gebrauchsfertigen Multiplikator habe, ist es an der Zeit, sich mit der tatsächlichen Anpassung der Preise in WooCommerce zu befassen.

Schritt 3: Preisfilter in WooCommerce

In WooCommerce gibt es einen Filter für einfache, gruppierte und externe Produkttypen und einen weiteren für variable Produkttypen. Ich empfehle Ihnen, beide Filter hinzuzufügen, um alle Produkttypen abzudecken. Darüber hinaus arbeitet WooCommerce mit drei zusätzlichen Preisfiltern:

  • Reguläre Preise (woocommerce_product_get_regular_priceund woocommerce_product_variation_get_regular_price)
  • Verkaufspreise (woocommerce_product_get_sale_priceund woocommerce_product_variation_get_sale_price)
  • Der aktuelle aktive Preis (woocommerce_product_get_priceund woocommerce_product_variation_get_price). Der aktuelle aktive Preis wird entweder aus dem regulären Preis oder dem Verkaufspreis abgerufen.

Jetzt könnten Sie einfach den aktuell aktiven Preis filtern und ihn einen Tag nennen, aber es hängt davon ab, wie Sie die Preisanzeige in Ihrem Webshop handhaben möchten. Denken Sie daran, dass für Produkte im Angebot standardmäßig der alte Preis (regulärer Preis) durchgestrichen und der Verkaufspreis (aktiver Preis) daneben angezeigt wird. Wenn Sie nur filtern x_get_priceund ein Produkt im Angebot ist, wird der alte Preis ohne Rabatt angezeigt.

Aus diesem Grund entscheide ich mich, sowohl den aktiven aktuellen Preis (x_get_price) als auch den regulären Preis (x_get_regular_price) zu filtern, weil ich meine Webshop-Benutzer nicht verwirren möchte.

Schreiben des Preisfilters

Alle vier Filter beziehen sich auf dieselbe Funktion. Innerhalb der Funktion multiplizieren wir einfach den angegebenen Preis mit der Klassenvariablen. Denken Sie daran, dass der Multiplikator 1 ist, wenn kein Rabatt festgelegt ist, was zu keiner Preisänderung führt.

Beachten Sie, dass alle Filter das Produktobjekt als zweiten Parameter bereitstellen. Wenn Sie die Preise je nach Produkt anpassen möchten, können Sie den Code dazu anpassen.

Wenn Sie Ihren Webshop überprüfen, während Sie als Benutzer mit einem Rabatt angemeldet sind, sollten Sie jetzt reduzierte Preise sehen! Allerdings sind wir noch nicht ganz fertig. WooCommerce hat in 2.4.7 einige Änderungen vorgenommen (lesen Sie hier mehr ), die sich auf die dynamische Preisgestaltung für variable Produkte auswirken.

Umgang mit variablen Produktpreisen

Damit die dynamische Preisgestaltung bei variablen Produkten funktioniert, sollten Sie die im oben verlinkten Blogbeitrag erwähnten Filter hinzufügen; woocommerce_variation_prices_price(und den entsprechenden regulären Preisfilter woocommerce_variation_prices_regular_price) und den Filter woocommerce_get_variation_prices_hash. Der Hash-Filter verwaltet den internen Cache von WooCommerce – und wir müssen WooCommerce anweisen, ihn ordnungsgemäß zu löschen, wenn wir die Preise per Code ändern.

Die ersten beiden Preisfilter folgen dem gleichen Verfahren wie adjustPrice(), jedoch weise ich ihnen eine andere Funktion zu, da die Parameter unterschiedlich sind. Was die Hash-Filterfunktion betrifft, müssen wir dem Hash-Array hinzufügen, um zu identifizieren, wann der Cache geleert werden sollte. Das Hinzufügen der Benutzer-ID ist eine gute Idee, da der Multiplikator für jeden Benutzer einzigartig ist.

Endlich sollte es soweit sein!

Beachten Sie, dass Sie in allen Filtern Zugriff auf das vollständige Produktobjekt haben (sogar Variationsobjekt in den letzten beiden). Dies ist nützlich, wenn Sie Preise basierend auf Produktinformationen anpassen möchten. wie das Ausschließen bestimmter Produkte vom Rabatt oder das Anwenden eines Rabatts basierend auf den Produktkategorien. Es sollte für Sie ziemlich einfach sein, den Code an das anzupassen, was Sie für Ihren Fall benötigen.

Der vollständige endgültige Code

Wie üblich hoffe ich, dass Sie etwas gelernt haben, indem Sie diesem Beitrag Schritt für Schritt gefolgt sind, aber ich werde die vollständige Klasse als Referenz bereitstellen:

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