Saya menghadapi cabaran dengan proses pembayaran dalam WooCommerce.
Saya menggunakan pemalam "B2B for WooCommerce" untuk membezakan antara produk biasa dan produk B2B. Adegan adalah seperti berikut:
1 - Pelawat tidak berdaftar menambahkan produk daripada kategori "Umum" (tersedia kepada pelawat tidak berdaftar secara lalai) ke troli beli-belah mereka.
2 - Pada halaman pembayaran, pelawat memutuskan untuk mendaftar sebagai pelanggan B2B (melalui medan pemilihan borang pada halaman pembayaran).
3 - Proses pendaftaran dan pembayaran berlaku serentak di halaman ini.
Saya ingin mengelakkan tempahan dibuat sekiranya pengguna mendaftar sebagai pelanggan B2B dan mempunyai produk "biasa" di dalam troli. Memandangkan kedua-dua tindakan ini (pendaftaran dan pembayaran) berlaku pada masa yang sama, cangkuk WooCommerce biasa tidak berfungsi seperti yang diharapkan.
Bagaimana untuk mengesahkan peranan pengguna dan kandungan troli beli-belah yang didaftarkan semasa proses pembayaran dan menyekat pesanan apabila syarat dipenuhi? Atau mungkin ada cara yang lebih baik dan lebih mudah untuk melakukan ini?
Saya mencuba fungsi menetapkan semula troli dan memuat semula halaman.
Editor:
Peranan pengguna: Wwp_wholesaler
Saya mencipta dua kategori produk WooCommerce: Umum dan Borong. "Normal" kelihatan kepada semua pelawat. Selepas mendaftarkan peranan, "Wwp_wholesaler" akan dapat melihat "pemborong".
Atribut nama medan pemilihan ialah: "afreg_select_user_role". Atribut nilai pilihan ialah "pelanggan" (untuk pelanggan tetap) dan "wwp_wholesaler" (untuk pemborong).
Kod berikut akan menghentikan proses pembayaran lebih awal apabila ia mengesan bahawa pelanggan B2B mempunyai item biasa dalam troli beli-belah mereka. Dalam kes ini, item biasa dikeluarkan dari troli dan mesej ralat dilemparkan, menghalang pesanan daripada dibuat.
Nota: Alias peranan pengguna yang diberikan adalah salah kerana alias peranan pengguna tidak menggunakan huruf besar.
Kod:
Kod ini terdapat dalam fail functions.php tema kanak-kanak (atau dalam pemalam). Diuji dan berfungsi.