วิธีดำเนินการคำสั่งซื้อ WooCommerce ให้สมบูรณ์โดยอัตโนมัติเมื่อไปที่สถานะการประมวลผล

เผยแพร่แล้ว: 2019-04-06

ไซต์อีคอมเมิร์ซทุกแห่งต้องมีการติดตามและจัดการคำสั่งซื้อซึ่งอาจเป็นงานที่ค่อนข้างยากสำหรับผู้ดูแลระบบ โดยพิจารณาจากจำนวนคำสั่งซื้อที่เว็บไซต์อีคอมเมิร์ซที่มีการเข้าชมสูงโดยเฉลี่ยได้รับต่อวัน เมื่อพูดถึง WooCommerce คำสั่งซื้อจะถูกสร้างขึ้นทันทีที่กระบวนการ Checkout เสร็จสิ้น (ตรวจสอบขั้นตอนสถานะคำสั่งซื้อของ WooCommerce ด้านล่าง)

ตามตำแหน่งที่คำสั่งซื้ออยู่ในห่วงโซ่การชำระเงินเพื่อจัดส่ง จะได้รับสถานะที่กำหนด สถานะเหล่านี้ถูกกำหนดและ/หรือเปลี่ยนแปลงโดย WooCommerce, Payment Gateway และเจ้าของร้านค้า/ผู้ดูแลระบบ ขึ้นอยู่กับว่าคำสั่งซื้ออยู่ที่ใด

ก่อนที่เราจะดูขั้นตอนการสั่งซื้อใน WooCommerce มากำหนดสถานะคำสั่งซื้อใน Woocommerce ก่อนเพื่อประโยชน์ของมือใหม่

สถานะการสั่งซื้อใน WooCommerce คืออะไร?

สถานะคำสั่งซื้อคือการแสดงสถานะปัจจุบันที่คำสั่งซื้อโดยลูกค้าคือ สถานะการสั่งซื้อใน Woocommerce เปลี่ยนไปเมื่อคำสั่งซื้อได้รับการประมวลผลจนถึงขั้นตอนการจัดส่งหรือคืนเงินในกรณีที่มีปัญหากับผลิตภัณฑ์/บริการ และเจ้าของร้านค้าตกลงที่จะคืนเงินให้กับลูกค้า ตัวอย่างเช่น เมื่อลูกค้าสั่งซื้อผลิตภัณฑ์บางอย่าง สถานะการสั่งซื้อถัดไปในลำดับจะถูกตั้งค่าทันที ซึ่งก็คือ "การชำระเงินที่รอดำเนินการ" การชำระเงินที่รอดำเนินการถูกตั้งค่าเป็นค่าเริ่มต้นใน Woocommerce

ตอนนี้ มาดูผังงานกันเพื่อความเข้าใจที่ดีขึ้น

ผังสถานะคำสั่งซื้อของ Woocommerce

Woocommerce Order Status Flow Chart
ที่มา: https://docs.woocommerce.com/document/managing-orders/

ตามภาพประกอบ หลังจากชำระเงินสำหรับคำสั่งซื้อเรียบร้อยแล้ว สถานะจะถูกตั้งค่าเป็น "กำลังดำเนินการ" จนกว่าเจ้าของร้านค้าจะเปลี่ยนเป็น "เสร็จสิ้น" ด้วยตนเอง นี่เป็นงานค่าใช้จ่ายสำหรับเจ้าของร้านค้าหรือผู้ดูแลระบบ โดยเฉพาะอย่างยิ่งในกรณีที่มียอดขายสูง วิธีหนึ่งในการทำให้กระบวนการนี้มีประสิทธิภาพคือการสั่งซื้อ 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 โดยอัตโนมัติว่าเสร็จสิ้นแล้วสำหรับผลิตภัณฑ์เสมือน

อีกกรณีหนึ่งที่คุณต้องการให้สถานะคำสั่งซื้อเสร็จสมบูรณ์โดยอัตโนมัติคือเมื่อผลิตภัณฑ์หรือผลิตภัณฑ์ในคำสั่งซื้อเป็นผลิตภัณฑ์เสมือนจริง ผลิตภัณฑ์เสมือนเป็นผลิตภัณฑ์ที่ไม่สามารถจับต้องได้หรือไม่สามารถดาวน์โหลดได้ ตัวอย่างนี้คือการสมัครเป็นสมาชิกร้านค้าหรือคูปองที่มอบส่วนลดให้กับผู้ที่ซื้อการสมัครรับข้อมูล

automatically Complete WooCommerce orders when they go to the Processing status - Virtual Product Example - Store Membership
ตัวอย่างผลิตภัณฑ์เสมือน

การสมัครสมาชิกร้านค้าอาจไม่มีรูปแบบที่จับต้องได้ แต่มีวันหมดอายุแทน ผลิตภัณฑ์ที่ดาวน์โหลดได้ เช่น ซอฟต์แวร์ หรือแม้แต่ตั๋วภาพยนตร์อิเล็กทรอนิกส์ ก็เป็นผลิตภัณฑ์เสมือนจริงเช่นกัน เนื่องจากไม่มีสถานะหรือแบบฟอร์มออฟไลน์ สำหรับผลิตภัณฑ์เสมือนจริงส่วนใหญ่ ไม่มีตัวเลือกสำหรับ “การเก็บเงินปลายทาง” เลย การชำระเงินจะดำเนินการทันที ดังนั้น จึงปลอดภัยที่จะไม่รวมเงื่อนไขการตรวจสอบวิธีการชำระเงินที่ใช้ แต่ให้เพิ่มเงื่อนไขเพื่อตรวจสอบว่าผลิตภัณฑ์ทั้งหมดในคำสั่งซื้อเป็นผลิตภัณฑ์เสมือนจริงแทน

 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 หมายถึงผลิตภัณฑ์ ต้องดึงเฉพาะผลิตภัณฑ์ทีละรายการเพื่อตรวจสอบว่าเป็นผลิตภัณฑ์เสมือนหรือไม่ หากรายการเดียวไม่ใช่ผลิตภัณฑ์เสมือน สถานะของคำสั่งซื้อจะไม่ถูกทำเครื่องหมายว่าเสร็จสิ้น

อย่างไรก็ตาม ขึ้นอยู่กับความต้องการของคุณ และการใช้ข้อมูลโค้ดแรกในโพสต์นี้ คุณสามารถเพิ่มเงื่อนไขเพิ่มเติมเพื่อทำเครื่องหมายสถานะการสั่งซื้อเป็นเสร็จสมบูรณ์ ตัวอย่างเช่น หากคุณต้องการทำเครื่องหมายสถานะการสั่งซื้อว่าเสร็จสมบูรณ์ แม้กระทั่งสำหรับผลิตภัณฑ์ที่ไม่ใช่เสมือน (หากการชำระเงินสำหรับผลิตภัณฑ์เหล่านี้เสร็จสิ้น) คุณสามารถทำได้โดยเพิ่มเช็คในวิธีการชำระเงินหลังจากที่ตรวจสอบว่าเป็นเสมือน ผลิตภัณฑ์. อย่างไรก็ตาม ผ่านข้อมูลโค้ดนี้ สถานะของคำสั่งซื้อจะถูกตั้งค่าเป็น เสร็จสิ้น ต่อเมื่อผลิตภัณฑ์ทั้งหมดในคำสั่งซื้อเป็นผลิตภัณฑ์เสมือน