วิธีดำเนินการคำสั่งซื้อ WooCommerce ให้สมบูรณ์โดยอัตโนมัติเมื่อไปที่สถานะการประมวลผล
เผยแพร่แล้ว: 2019-04-06ไซต์อีคอมเมิร์ซทุกแห่งต้องมีการติดตามและจัดการคำสั่งซื้อซึ่งอาจเป็นงานที่ค่อนข้างยากสำหรับผู้ดูแลระบบ โดยพิจารณาจากจำนวนคำสั่งซื้อที่เว็บไซต์อีคอมเมิร์ซที่มีการเข้าชมสูงโดยเฉลี่ยได้รับต่อวัน เมื่อพูดถึง WooCommerce คำสั่งซื้อจะถูกสร้างขึ้นทันทีที่กระบวนการ Checkout เสร็จสิ้น (ตรวจสอบขั้นตอนสถานะคำสั่งซื้อของ WooCommerce ด้านล่าง)
ตามตำแหน่งที่คำสั่งซื้ออยู่ในห่วงโซ่การชำระเงินเพื่อจัดส่ง จะได้รับสถานะที่กำหนด สถานะเหล่านี้ถูกกำหนดและ/หรือเปลี่ยนแปลงโดย WooCommerce, Payment Gateway และเจ้าของร้านค้า/ผู้ดูแลระบบ ขึ้นอยู่กับว่าคำสั่งซื้ออยู่ที่ใด
ก่อนที่เราจะดูขั้นตอนการสั่งซื้อใน WooCommerce มากำหนดสถานะคำสั่งซื้อใน Woocommerce ก่อนเพื่อประโยชน์ของมือใหม่
สถานะการสั่งซื้อใน WooCommerce คืออะไร?
สถานะคำสั่งซื้อคือการแสดงสถานะปัจจุบันที่คำสั่งซื้อโดยลูกค้าคือ สถานะการสั่งซื้อใน Woocommerce เปลี่ยนไปเมื่อคำสั่งซื้อได้รับการประมวลผลจนถึงขั้นตอนการจัดส่งหรือคืนเงินในกรณีที่มีปัญหากับผลิตภัณฑ์/บริการ และเจ้าของร้านค้าตกลงที่จะคืนเงินให้กับลูกค้า ตัวอย่างเช่น เมื่อลูกค้าสั่งซื้อผลิตภัณฑ์บางอย่าง สถานะการสั่งซื้อถัดไปในลำดับจะถูกตั้งค่าทันที ซึ่งก็คือ "การชำระเงินที่รอดำเนินการ" การชำระเงินที่รอดำเนินการถูกตั้งค่าเป็นค่าเริ่มต้นใน Woocommerce
ตอนนี้ มาดูผังงานกันเพื่อความเข้าใจที่ดีขึ้น
ผังสถานะคำสั่งซื้อของ Woocommerce

ตามภาพประกอบ หลังจากชำระเงินสำหรับคำสั่งซื้อเรียบร้อยแล้ว สถานะจะถูกตั้งค่าเป็น "กำลังดำเนินการ" จนกว่าเจ้าของร้านค้าจะเปลี่ยนเป็น "เสร็จสิ้น" ด้วยตนเอง นี่เป็นงานค่าใช้จ่ายสำหรับเจ้าของร้านค้าหรือผู้ดูแลระบบ โดยเฉพาะอย่างยิ่งในกรณีที่มียอดขายสูง วิธีหนึ่งในการทำให้กระบวนการนี้มีประสิทธิภาพคือการสั่งซื้อ WooCommerce ให้สมบูรณ์โดยอัตโนมัติเมื่อไปที่สถานะการประมวลผล มาดูกันว่าเราจะทำอย่างนั้นได้อย่างไรโดยใช้ข้อมูลโค้ด
รายการสถานะคำสั่งซื้อที่สมบูรณ์ใน WooCommerce
- การชำระเงินที่รอดำเนินการ: สิ่งนี้จะเกิดขึ้นโดยค่าเริ่มต้นเมื่อมีการสั่งซื้อ แต่ไม่มีการชำระเงิน
- ล้มเหลว: แสดงว่าการชำระเงินไม่ผ่านและถูกปฏิเสธ
- การประมวลผล: แสดงว่าเจ้าของร้านค้าได้รับการชำระเงินแล้ว และขณะนี้สามารถดำเนินการจัดส่งและจัดส่งได้
- เสร็จสมบูรณ์: สิ่งนี้บ่งชี้ว่าทุกอย่างเป็นไปด้วยดี และตอนนี้ได้ปฏิบัติตามคำสั่งและเสร็จสมบูรณ์แล้ว
- ระงับ : ระบุสถานะที่คำสั่งซื้อต้องได้รับการยืนยันจากเจ้าของร้าน
- ยกเลิก แล้ว : สถานะคำสั่งซื้อ "ยกเลิกแล้ว" ไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม การยกเลิกอาจมาจากผู้ดูแลระบบหรือลูกค้าในบางจุด
- คืนเงินแล้ว: คำสั่งซื้อได้รับการคืนเงินแล้ว ไม่จำเป็นต้องดำเนินการใดๆ อีกต่อไป
ตอนนี้เราเข้าใจดีว่าสถานะคำสั่งซื้อคืออะไรและฟังก์ชันของมัน มาดูกันว่าทำไมจึงควรอัปเดตสถานะคำสั่งซื้อ
ตั้งค่าสถานะคำสั่งซื้อของ WooCommerce เป็นเสร็จสมบูรณ์โดยอัตโนมัติตามวิธีการชำระเงิน
ในกรณีส่วนใหญ่ คุณจะต้องดำเนินการนี้หลังจากชำระเงินสำเร็จเท่านั้น และจะเกิดขึ้นได้ก็ต่อเมื่อผู้ใช้ไม่ได้เลือกตัวเลือกเงินสดเมื่อส่งมอบ เมื่อใส่โค้ดด้านล่างในไฟล์ functions.php ของธีมลูกของคุณแล้ว จะกำหนดสถานะของคำสั่งซื้อเป็น เสร็จสมบูรณ์ โดยอัตโนมัติทุกครั้งที่ชำระเงินสำเร็จ ดังนั้น ในทุกกรณี ยกเว้นเมื่อผู้ใช้เลือกตัวเลือกเงินสดเมื่อจัดส่ง สถานะคำสั่งซื้อจะเปลี่ยนเป็นเสร็จสมบูรณ์โดยอัตโนมัติ
add_action('woocommerce_order_status_changed', 'ts_auto_complete_by_payment_method'); ฟังก์ชัน ts_auto_complete_by_payment_method($order_id) { ถ้า ( ! $order_id ) { กลับ; } ผลิตภัณฑ์ $ ทั่วโลก; $order = wc_get_order( $order_id ); if ($order->data['status'] == 'กำลังดำเนินการ') { $payment_method=$order->get_payment_method(); ถ้า ($payment_method!="cod") { $order->update_status( 'เสร็จสิ้น' ); } } }

ที่นี่ คุณจะใช้ hook woocommerce_order_status_changed เพื่อเรียกใช้ฟังก์ชันเมื่อสถานะของคำสั่งซื้อเปลี่ยนไป หลังจากตรวจสอบว่าคำสั่งซื้อมีสถานะการประมวลผลหรือไม่ เฉพาะในกรณีที่วิธีการชำระเงินไม่ใช่การเก็บเงินปลายทาง สถานะคำสั่งซื้อจะเปลี่ยนเป็น เสร็จสิ้น WooCommerce มีวิธีการชำระเงินเริ่มต้นสี่วิธี ได้แก่ โอนเงินผ่านธนาคารโดยตรง (bacs), ชำระเงินด้วยเช็ค (เช็ค), เงินสดในการจัดส่ง (cod) และ PayPal (paypal) ขึ้นอยู่กับวิธีการชำระเงินที่คุณระบุเงื่อนไข คุณจะต้องใช้ ID ที่เหมาะสม เช่น “bacs”, “cheque”, “cod”, “paypal”
ตั้งค่าสถานะคำสั่งซื้อของ WooCommerce โดยอัตโนมัติว่าเสร็จสิ้นแล้วสำหรับผลิตภัณฑ์เสมือน
อีกกรณีหนึ่งที่คุณต้องการให้สถานะคำสั่งซื้อเสร็จสมบูรณ์โดยอัตโนมัติคือเมื่อผลิตภัณฑ์หรือผลิตภัณฑ์ในคำสั่งซื้อเป็นผลิตภัณฑ์เสมือนจริง ผลิตภัณฑ์เสมือนเป็นผลิตภัณฑ์ที่ไม่สามารถจับต้องได้หรือไม่สามารถดาวน์โหลดได้ ตัวอย่างนี้คือการสมัครเป็นสมาชิกร้านค้าหรือคูปองที่มอบส่วนลดให้กับผู้ที่ซื้อการสมัครรับข้อมูล

การสมัครสมาชิกร้านค้าอาจไม่มีรูปแบบที่จับต้องได้ แต่มีวันหมดอายุแทน ผลิตภัณฑ์ที่ดาวน์โหลดได้ เช่น ซอฟต์แวร์ หรือแม้แต่ตั๋วภาพยนตร์อิเล็กทรอนิกส์ ก็เป็นผลิตภัณฑ์เสมือนจริงเช่นกัน เนื่องจากไม่มีสถานะหรือแบบฟอร์มออฟไลน์ สำหรับผลิตภัณฑ์เสมือนจริงส่วนใหญ่ ไม่มีตัวเลือกสำหรับ “การเก็บเงินปลายทาง” เลย การชำระเงินจะดำเนินการทันที ดังนั้น จึงปลอดภัยที่จะไม่รวมเงื่อนไขการตรวจสอบวิธีการชำระเงินที่ใช้ แต่ให้เพิ่มเงื่อนไขเพื่อตรวจสอบว่าผลิตภัณฑ์ทั้งหมดในคำสั่งซื้อเป็นผลิตภัณฑ์เสมือนจริงแทน
add_action('woocommerce_order_status_changed', 'ts_auto_complete_virtual'); ฟังก์ชัน ts_auto_complete_virtual($order_id) { ถ้า ( ! $order_id ) { กลับ; } ผลิตภัณฑ์ $ ทั่วโลก; $order = wc_get_order( $order_id ); if ($order->data['status'] == 'กำลังดำเนินการ') { $virtual_order = null; ถ้า ( count( $order->get_items() ) > 0 ) { foreach( $order->get_items() เป็น $item ) { if ( 'line_item' == $item['type'] ) { $_product = $order->get_product_from_item( $item ); ถ้า ( ! $_product->is_virtual() ) { // เมื่อเราพบผลิตภัณฑ์ที่ไม่ใช่เสมือนหนึ่งผลิตภัณฑ์ ให้แยกออกจากลูป $virtual_order = เท็จ; หยุดพัก; } อื่น { $virtual_order = จริง; } } } } // หากทั้งหมดเป็นผลิตภัณฑ์เสมือน ให้ทำเครื่องหมายว่าเสร็จสิ้น ถ้า ( $virtual_order ) { $order->update_status( 'เสร็จสิ้น' ); } } }
ที่นี่เราใช้ hook เดียวกันเพื่อเรียกใช้ฟังก์ชันของเรา ts_auto_complete_virtual หลังจากตรวจสอบว่าคำสั่งซื้ออยู่ในสถานะกำลังดำเนินการหรือไม่ คุณต้องตรวจสอบแต่ละรายการในคำสั่งซื้อเพื่อดูว่าเป็นผลิตภัณฑ์เสมือนจริงหรือไม่
บทสรุป
คำสั่งซื้อของ Woocommerce ทั่วไปมีรายการที่เกี่ยวข้องมากมาย เช่น สินค้า ค่าจัดส่ง ค่าธรรมเนียม ฯลฯ ในที่นี้ line_item หมายถึงผลิตภัณฑ์ ต้องดึงเฉพาะผลิตภัณฑ์ทีละรายการเพื่อตรวจสอบว่าเป็นผลิตภัณฑ์เสมือนหรือไม่ หากรายการเดียวไม่ใช่ผลิตภัณฑ์เสมือน สถานะของคำสั่งซื้อจะไม่ถูกทำเครื่องหมายว่าเสร็จสิ้น
อย่างไรก็ตาม ขึ้นอยู่กับความต้องการของคุณ และการใช้ข้อมูลโค้ดแรกในโพสต์นี้ คุณสามารถเพิ่มเงื่อนไขเพิ่มเติมเพื่อทำเครื่องหมายสถานะการสั่งซื้อเป็นเสร็จสมบูรณ์ ตัวอย่างเช่น หากคุณต้องการทำเครื่องหมายสถานะการสั่งซื้อว่าเสร็จสมบูรณ์ แม้กระทั่งสำหรับผลิตภัณฑ์ที่ไม่ใช่เสมือน (หากการชำระเงินสำหรับผลิตภัณฑ์เหล่านี้เสร็จสิ้น) คุณสามารถทำได้โดยเพิ่มเช็คในวิธีการชำระเงินหลังจากที่ตรวจสอบว่าเป็นเสมือน ผลิตภัณฑ์. อย่างไรก็ตาม ผ่านข้อมูลโค้ดนี้ สถานะของคำสั่งซื้อจะถูกตั้งค่าเป็น เสร็จสิ้น ต่อเมื่อผลิตภัณฑ์ทั้งหมดในคำสั่งซื้อเป็นผลิตภัณฑ์เสมือน