我在 WooCommerce 的结帐流程方面面临挑战。
我使用“B2B for WooCommerce”插件来区分常规产品和 B2B 产品。场景如下:
1 - 未注册的访问者将“常规”类别中的产品(默认情况下可供未注册的访问者使用)添加到其购物车。
2 - 在结帐页面上,访问者决定注册为 B2B 客户(通过结帐页面上的表单选择字段)。
3 - 注册和结账过程同时发生在这个页面上。
如果用户注册为 B2B 客户并且购物车中有“常规”产品,我希望阻止下订单。 由于这两个操作(注册和结账)同时发生,典型的 WooCommerce 挂钩无法按预期工作。
如何在结账过程中验证正在注册的用户角色和购物车内容,并在满足条件时阻止订单?或者也许有更好、更简单的方法来做到这一点?
我尝试了重置购物车并重新加载页面的功能。
编辑:
用户角色:Wwp_wholesaler
我创建了两个 WooCommerce 产品类别:普通和批发。 所有访客都可以看到“普通”。 在注册该角色后,“Wwp_wholesaler”就可以看到“批发”。
选择字段的名称属性为:“afreg_select_user_role”。 选项的值属性为“customer”(对于普通客户)和“wwp_wholesaler”(对于批发商)。
当检测到 B2B 客户的购物车中有常规商品时,以下代码将提前停止结账流程。在这种情况下,常规商品将从购物车中删除,并抛出错误消息,从而避免下订单。
注意:提供的用户角色别名是错误的,因为用户角色别名没有大写。
代码:
代码位于子主题的functions.php 文件中(或插件中)。经过测试并可以工作。