Skip to main content

ArtinTech Solution

Letting Admins Change a Product Variant After an Order Is Placed

“Boleh tukar pesanan saya kepada saiz 32, bukan 30?” ialah antara mesej paling biasa yang diterima kedai fesyen dalam talian selepas checkout, dan WooCommerce memang tiada jawapan terbina dalam untuknya.

Dua halangan berasingan

Halangan pertama ialah item pesanan WooCommerce tidak mempunyai tindakan “tukar variasi” di mana-mana dalam antara muka. Anda boleh menyunting kuantiti dan harga pada baris sedia ada, atau memadamnya dan menambah produk lain dari awal, tetapi menukar variasi sahaja sambil mengekalkan produk, harga dan kuantiti yang sama tidak disediakan.

Halangan kedua yang kurang jelas ialah penyuntingan item asli WooCommerce hanya berfungsi selagi $order->is_editable() mengembalikan true, iaitu bagi pemasangan lalai, status pesanan pending, on-hold atau auto-draft. Dalam amalan, kebanyakan pesanan sebenar sudah bertukar kepada Processing ketika pelanggan meminta tukar saiz, jadi penyunting asli terkunci sepenuhnya.

Apa yang kami bina

Kami menambah pautan Change variant di bawah setiap item produk bervariasi pada skrin suntingan pesanan, sengaja bebas daripada semakan is_editable() WooCommerce dan hanya dihadkan kepada keupayaan pentadbir, kerana membetulkan varian selepas itu ialah situasi apabila pesanan sudah bergerak ke hadapan. Mengkliknya memuatkan setiap gabungan saiz, warna dan panjang produk itu sebagai butang yang boleh diklik, menggunakan semula komponen pemilih yang dibina untuk Manual Order Creator.

Memilih variasi baharu memanggil kaedah WooCommerce sendiri WC_Order_Item_Product::set_variation(), kaedah yang sama digunakan checkout secara dalaman ketika mula membina item, supaya meta atribut berakhir dalam bentuk yang dijangka setiap bahagian lain WooCommerce, bukan anggaran buatan sendiri yang rosak dalam e-mel pesanan atau eksport CSV.

Setiap perubahan juga menulis nota pesanan yang merekod dengan tepat apa yang berubah (contohnya daripada Size 56 / Length 43 / Deep Blue kepada Size 50 / Length 43 / Deep Blue), supaya ada jejak audit yang jelas jika pelanggan mempertikaikan apa yang diterima.

Apa yang sengaja tidak dilakukannya

Ciri ini hanya menukar identiti variasi: saiz, warna, panjang dan nama item. Ia tidak menyentuh harga, kuantiti atau paras stok secara automatik. Itu sempadan yang disengajakan: mengubah caj pelanggan secara senyap atau melaraskan kiraan inventori secara automatik ialah keputusan yang patut dibuat kakitangan secara jelas, bukan kesan sampingan pembetulan saiz.

Pengajaran utama

  • Ciri yang hanya berfungsi selagi pesanan “boleh disunting” dalam erti kata sempit platform sering menyelesaikan kes yang salah; keperluan sebenar muncul selepas tempoh itu tamat.
  • Menggunakan semula kaedah setter platform sendiri, bukan menulis kemas kini meta mentah, ialah apa yang memastikan perubahan tersuai serasi dengan semua yang membaca data itu.
  • Menetapkan sempadan jelas tentang apa yang tidak disentuh sesuatu ciri (harga, stok) sama penting dengan apa yang dilakukannya.

Bacaan berkaitan: memperluas tetingkap pratonton pesanan, bagaimana kami membina pencipta pesanan manual.

Menghadapi had yang serupa dalam panel WooCommerce atau WordPress anda sendiri? Mari berbincang: ArtinTech Solution membina alat kedai tersuai seperti ini.

Share this article

Tinggalkan Balasan

Alamat e-mel anda tidak akan disiarkan. Medan diperlukan ditanda dengan *