Cara Menyelesaikan pesanan WooCommerce secara otomatis ketika mereka masuk ke status Pemrosesan

Diterbitkan: 2019-04-06

Setiap situs e-niaga memerlukan pelacakan dan pengelolaan pesanan yang dapat menjadi tugas yang cukup berat bagi administrator, mengingat jumlah pesanan yang diterima rata-rata situs web e-niaga dengan lalu lintas tinggi per hari. Ketika datang ke WooCommerce, pesanan akan dibuat segera setelah proses Checkout selesai (Lihat alur status pesanan WooCommerce di bawah).

Menurut di mana pesanan berada dalam rantai pembayaran-ke-pengiriman, itu akan diberi status. Status ini ditetapkan dan/atau diubah oleh WooCommerce, Payment Gateway, dan pemilik toko/administrator bergantung pada lokasi pesanan.

Sebelum kita melihat alur pemesanan di WooCommerce, mari kita tentukan status pemesanan di WooCommerce untuk kepentingan para pemula.

Apa itu Status Pesanan di WooCommerce?

Status pesanan adalah representasi dari keadaan saat ini di mana pesanan yang dibuat oleh pelanggan adalah . Status pesanan di Woocommerce berubah saat pesanan diproses ke tahap pengiriman atau pengembalian dana jika ada masalah dengan produk/layanan dan pemilik toko telah setuju untuk mengembalikan uang kepada pelanggan. Sebagai contoh, ketika seorang pelanggan melakukan pemesanan pada suatu produk tertentu, segera status pesanan berikutnya dalam urutan akan ditetapkan, yaitu “Pembayaran Tertunda”. Pembayaran tertunda diatur secara default di Woocommerce.

Sekarang, mari kita lihat diagram alur untuk pemahaman yang lebih baik.

Bagan Alir Status Pesanan Woocommerce

Woocommerce Order Status Flow Chart
Sumber: https://docs.woocommerce.com/document/managing-orders/

Seperti yang diilustrasikan, setelah pembayaran pesanan berhasil diselesaikan, statusnya diatur ke "Selesai" sampai pemilik toko secara manual mengubahnya menjadi "Selesai". Ini adalah tugas overhead untuk pemilik toko atau administrator, terutama dalam kasus di mana volume penjualan tinggi. Salah satu cara untuk membuat proses ini efisien adalah menyelesaikan pesanan WooCommerce secara otomatis saat mereka masuk ke status Pemrosesan. Mari kita lihat bagaimana kita bisa melakukannya menggunakan potongan kode.

Daftar Lengkap Status Pesanan di WooCommerce

  • Pembayaran tertunda: Ini muncul secara default ketika pesanan telah dilakukan tetapi tidak ada pembayaran yang dilakukan.
  • Gagal: Ini menunjukkan bahwa pembayaran tidak berhasil dan ditolak.
  • Pemrosesan: Ini menunjukkan bahwa pembayaran telah dilakukan dan diterima oleh pemilik toko dan sekarang dapat diproses untuk pengiriman dan pengiriman.
  • Selesai: Ini menunjukkan bahwa semuanya berjalan dengan baik dan pesanan sekarang telah dipenuhi dan diselesaikan.
  • Ditahan : Ini menunjukkan keadaan di mana pesanan memerlukan konfirmasi dari pemilik toko.
  • Dibatalkan : Status pesanan “Dibatalkan” tidak memerlukan tindakan lebih lanjut. Pembatalan bisa dari admin atau pelanggan di beberapa titik.
  • Dikembalikan: Pesanan telah dikembalikan, tidak ada tindakan lebih lanjut yang diperlukan

Sekarang setelah kita lebih memahami apa itu status pesanan dan fungsinya, mari kita lihat mengapa ada baiknya untuk memperbaruinya.

Secara otomatis mengatur status pesanan WooCommerce sebagai Selesai berdasarkan metode pembayaran

Dalam kebanyakan kasus, Anda hanya perlu melakukan ini setelah pembayaran berhasil dilakukan, dan ini hanya mungkin bila pengguna belum memilih opsi Tunai Saat Pengiriman. Kode di bawah ini, ketika dimasukkan ke dalam file functions.php dari tema anak Anda, akan secara otomatis mengatur status pesanan sebagai Selesai setiap kali pembayaran berhasil dilakukan. Oleh karena itu, dalam semua kasus kecuali ketika pengguna memilih opsi Tunai Saat Pengiriman, status pesanan akan secara otomatis berubah menjadi Selesai.

 add_action('woocommerce_order_status_changed', 'ts_auto_complete_by_payment_method');

fungsi ts_auto_complete_by_payment_method($order_id)
{
  
  jika ( ! $pesan_id ) {
        kembali;
  }

  global $produk;
  $pesanan = wc_get_order( $pesan_id );
  
  if ($pesan->data['status'] == 'memproses') {
        $payment_method=$order->get_payment_method();
        if ($payment_method!="cod")
        {
            $order->update_status( 'selesai' );
        }
      
  }
  
}

Di sini, Anda akan menggunakan kait woocommerce_order_status_changed untuk memanggil fungsi saat status pesanan diubah. Setelah mengecek apakah pesanan berstatus Processing, hanya jika metode pembayarannya bukan Cash-on-Delivery, status pesanan akan diubah menjadi Completed . WooCommerce memiliki empat metode pembayaran default yaitu. Transfer Bank Langsung (bacs), Pembayaran cek (cek), Tunai di Tempat (cod) dan PayPal (paypal). Tergantung pada metode pembayaran yang Anda tentukan kondisinya, Anda harus menggunakan ID yang sesuai, misalnya “bacs”, “cheque”, “cod”, “paypal”.

Secara otomatis mengatur status pesanan WooCommerce sebagai Selesai untuk produk virtual

Kasus lain di mana Anda ingin status pesanan selesai secara otomatis adalah ketika produk atau produk dalam pesanan adalah produk virtual. Produk virtual adalah produk yang tidak berwujud atau dapat diunduh. Contohnya adalah langganan keanggotaan toko atau kupon yang menawarkan diskon kepada mereka yang telah membeli langganan.

automatically Complete WooCommerce orders when they go to the Processing status - Virtual Product Example - Store Membership
Contoh Produk Virtual

Langganan keanggotaan toko mungkin tidak memiliki bentuk nyata melainkan tanggal kedaluwarsa. Produk yang dapat diunduh seperti perangkat lunak atau bahkan tiket film elektronik juga merupakan produk virtual, karena tidak memiliki kehadiran atau bentuk offline. Dengan sebagian besar produk virtual, tidak pernah ada opsi “Cash-on-Delivery”. Pembayaran dilakukan di tempat, dan karenanya aman untuk tidak menyertakan kondisi pengecekan metode pembayaran yang digunakan, tetapi hanya menambahkan kondisi untuk memeriksa apakah semua produk dalam pesanan adalah produk virtual.

 add_action('woocommerce_order_status_changed', 'ts_auto_complete_virtual');

fungsi ts_auto_complete_virtual($order_id)
{
  
  jika ( ! $pesan_id ) {
        kembali;
  }
  
  global $produk;
  $pesanan = wc_get_order( $pesan_id );
  
  if ($pesan->data['status'] == 'memproses') {
    
    $virtual_order = nol;

    if ( count( $order->get_items() ) > 0 ) {

      foreach( $order->get_items() sebagai $item ) {

        if ( 'line_item' == $item['type'] ) {

          $_produk = $order->get_product_from_item( $item );

          if ( ! $_product->is_virtual() ) {
            // setelah kita menemukan satu produk non-virtual, keluar dari loop
            $virtual_order = salah;
            merusak;
          } 
          kalau tidak {
            $virtual_order = benar;
          }
       }
     }
   }

    // jika semua adalah produk virtual, tandai sebagai selesai
    jika ( $virtual_order ) {
      $order->update_status( 'selesai' );
    }
  }	
}

Di sini, kami menggunakan kait yang sama untuk memanggil fungsi kami ts_auto_complete_virtual . Setelah memeriksa apakah pesanan dalam status Pemrosesan, Anda harus memeriksa setiap item untuk melihat apakah itu produk virtual.

Kesimpulan

Pesanan khas Woocommerce memiliki banyak item yang terkait dengannya seperti produk, pengiriman, biaya, dll. Di sini, line_item mengacu pada produk. Hanya produk yang perlu diambil satu per satu untuk memeriksa apakah produk tersebut virtual. Jika bahkan satu item bukan produk virtual, status pesanan tidak akan ditandai sebagai Selesai.

Namun, bergantung pada kebutuhan Anda, dan menggunakan cuplikan kode pertama di pos ini, Anda dapat menambahkan lebih banyak ketentuan untuk menandai status pesanan sebagai Selesai. Misalnya, jika Anda ingin menandai Status Pesanan sebagai Selesai bahkan untuk produk non-virtual (jika pembayaran untuk produk ini telah selesai), maka Anda dapat melakukannya dengan menambahkan tanda centang pada metode pembayaran setelah memeriksa apakah itu virtual produk. Namun, melalui cuplikan kode ini, status pesanan akan ditetapkan sebagai Selesai hanya jika semua produk dalam pesanan adalah produk virtual.