Ich stehe vor Herausforderungen beim Checkout-Prozess in WooCommerce.
Ich verwende das Plugin „B2B für WooCommerce“, um zwischen regulären Produkten und B2B-Produkten zu unterscheiden. Die Szene ist wie folgt:
1 – Ein nicht registrierter Besucher fügt seinem Warenkorb ein Produkt aus der Kategorie „Allgemein“ (standardmäßig für nicht registrierte Besucher verfügbar) hinzu.
2 – Auf der Checkout-Seite entscheidet sich der Besucher, sich als B2B-Kunde zu registrieren (über Formularauswahlfelder auf der Checkout-Seite).
3 - Der Registrierungs- und Checkout-Prozess erfolgt gleichzeitig auf dieser Seite.
Ich möchte verhindern, dass eine Bestellung aufgegeben wird, wenn sich der Benutzer als B2B-Kunde registriert und ein „normales“ Produkt im Warenkorb hat. Da diese beiden Aktionen (Anmeldung und Kaufabwicklung) gleichzeitig erfolgen, funktionieren typische WooCommerce-Hooks nicht wie erwartet.
Wie kann ich die Benutzerrolle und den Inhalt des Warenkorbs überprüfen, die während des Bestellvorgangs registriert werden, und die Bestellung sperren, wenn die Bedingungen erfüllt sind? Oder gibt es vielleicht eine bessere und einfachere Möglichkeit, dies zu tun?
Ich habe die Funktion zum Zurücksetzen des Warenkorbs und zum Neuladen der Seite ausprobiert.
Herausgeber:
Benutzerrolle: Wwp_wholesaler
Ich habe zwei WooCommerce-Produktkategorien erstellt: Allgemein und Großhandel. „Normal“ ist für alle Besucher sichtbar. Nach der Registrierung der Rolle kann „Wwp_wholesaler“ „Wholesaler“ sehen.
Das Namensattribut des Auswahlfeldes lautet: „afreg_select_user_role“. Die Wertattribute der Optionen sind „customer“ (für Stammkunden) und „wwp_wholesaler“ (für Großhändler).
当检测到 B2B 客户的购物车中有常规商品时,以下代码将提前停止结账流程。在这种情况下,常规商品将从购物车中删除,并抛出错误消息,从而避免下订单。
注意:提供的用户角色别名是错误的,因为用户角色别名没有大写。
代码:
代码位于子主题的functions.php 文件中(或插件中)。经过测试并可以工作。