WooCommerce でのチェックアウト プロセスで問題が発生しています。
通常の商品とB2B商品を区別するために「B2B for WooCommerce」プラグインを使用しています。シーンは次のとおりです:
1 - 未登録の訪問者は、「一般」カテゴリ (デフォルトで未登録の訪問者が利用可能) から製品をショッピング カートに追加します。
2 - チェックアウト ページで、訪問者は (チェックアウト ページのフォーム選択フィールドを介して) B2B 顧客として登録することを決定します。
3 - 登録とチェックアウトのプロセスはこのページで同時に行われます。
ユーザーが B2B 顧客として登録し、カートに「通常」の製品が入っている場合、注文が行われないようにしたいと考えています。 これら 2 つのアクション (サインアップとチェックアウト) は同時に発生するため、一般的な WooCommerce フックは期待どおりに機能しません。
チェックアウトプロセス中に登録されているユーザーロールとショッピングカートの内容を確認し、条件が満たされた場合に注文をブロックするにはどうすればよいですか?それとも、これを行うためのより良い、より簡単な方法があるでしょうか?
カートをリセットしてページを再読み込みする機能を試してみました。
###編集:###ユーザー役割: Wwp_wholesaler
私は、一般と卸売という 2 つの WooCommerce 製品カテゴリを作成しました。 「通常」はすべての訪問者に表示されます。 ロールを登録すると、「Wwp_wholesaler」から「卸売業者」が見えるようになります。
選択フィールドの名前属性は「afreg_select_user_role」です。 オプションの値属性は、「customer」(通常の顧客の場合) と「wwp_wholesaler」(卸売業者の場合) です。
次のコードは、B2B 顧客のショッピング カートで通常の商品が検出されたときに、チェックアウト プロセスを早期に停止します。この場合、通常の商品がカートから削除され、エラー メッセージが表示され、注文できなくなります。
注: ユーザー ロールのエイリアスが大文字ではないため、指定されたユーザー ロールのエイリアスは正しくありません。
コード:
リーリーコードは子テーマのfunctions.phpファイル(またはプラグイン)にあります。テスト済みで動作しています。