WooCommerce siparişleri İşleme durumuna geçtiklerinde otomatik olarak nasıl tamamlanır?

Yayınlanan: 2019-04-06

Her e-ticaret sitesi, ortalama yüksek trafikli bir e-ticaret web sitesinin günde aldığı sipariş sayısı göz önüne alındığında, yönetici için oldukça göz korkutucu bir görev olabilen siparişleri izleme ve yönetmeyi gerektirir. WooCommerce söz konusu olduğunda, Ödeme işlemi tamamlanır tamamlanmaz bir sipariş oluşturulur (Aşağıdaki WooCommerce sipariş durumu akışına göz atın).

Siparişin ödemeden teslimata zincirinde nerede olduğuna göre bir durum atanır. Bu durumlar, siparişin bulunduğu yere bağlı olarak WooCommerce, Payment Gateway ve mağaza sahibi/yöneticisi tarafından belirlenir ve/veya değiştirilir.

WooCommerce'deki sipariş akışına bir göz atmadan önce, yeni başlayanlar için WooCommerce'de sipariş durumunun ne olduğunu tanımlayalım.

WooCommerce'de Sipariş Durumu nedir?

Sipariş durumu, müşteri tarafından verilen bir siparişin mevcut durumunun bir temsilidir . WooCommerce'deki sipariş durumu, ürün/hizmetlerle ilgili bir sorun olması ve mağaza sahibinin müşteriye geri ödeme yapmayı kabul etmesi durumunda sipariş teslimat aşamasına veya geri ödemeye kadar işlenirken değişir. Örneğin, bir müşteri belirli bir ürün için sipariş verdiğinde, hemen sıradaki bir sonraki sipariş durumu olan “Ödeme Bekleniyor” belirlenir. Bekleyen ödeme, WooCommerce'de varsayılan olarak ayarlanır.

Şimdi daha iyi anlamak için akış şemasına bir göz atalım.

WooCommerce Sipariş Durumu Akış Şeması

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

Gösterildiği gibi, bir siparişin ödemesi başarıyla tamamlandıktan sonra, mağaza sahibi manuel olarak "Tamamlandı" olarak değiştirene kadar durumu "İşleniyor" olarak ayarlanır. Bu, özellikle satış hacminin yüksek olduğu durumlarda, mağaza sahibi veya yöneticisi için genel bir görevdir. Bu süreci verimli hale getirmenin bir yolu, WooCommerce siparişlerini İşleme durumuna gittiklerinde otomatik olarak tamamlamaktır. Şimdi kod parçacığını kullanarak bunu nasıl yapabileceğimize bakalım.

WooCommerce'de Sipariş Durumunun Tam Listesi

  • Bekleyen ödeme: Bu, sipariş verildiğinde ancak ödeme yapılmadığında varsayılan olarak gelir.
  • Başarısız: Bu, ödemenin yapılmadığını ve reddedildiğini gösterir.
  • İşleniyor: Bu, ödemenin mağaza sahipleri tarafından yapıldığını ve alındığını ve artık nakliye ve teslimat için işlenebileceğini gösterir.
  • Tamamlandı: Bu, her şeyin yolunda gittiğini ve siparişin artık yerine getirildiğini ve tamamlandığını gösterir.
  • Beklemede : Bu, siparişin mağaza sahibinden onay gerektirdiği bir durumu belirtir.
  • İptal edildi : "İptal edildi" sipariş durumu başka bir işlem gerektirmez. İptal, bir noktada yöneticiden veya müşteriden olabilir.
  • Para İadesi: Siparişin parası iade edildi, başka bir işlem yapılmasına gerek yok

Artık sipariş durumunun ne olduğunu ve işlevini daha iyi anladığımıza göre, onu güncellemenin neden iyi bir fikir olabileceğini görelim.

Ödeme yöntemine göre WooCommerce sipariş durumunu otomatik olarak Tamamlandı olarak ayarlayın

Çoğu durumda, bunu yalnızca ödeme başarıyla yapıldıktan sonra yapmanız gerekir ve bu yalnızca kullanıcı Teslimatta Nakit seçeneğini seçmediğinde mümkündür. Aşağıdaki kod, alt temanızın function.php dosyasına eklendiğinde, bir ödeme başarıyla yapıldığında siparişin durumunu otomatik olarak Tamamlandı olarak ayarlayacaktır. Bu nedenle, kullanıcının Kapıda Ödeme seçeneğini seçmesi dışında tüm durumlarda, sipariş durumu otomatik olarak Tamamlandı olarak değişecektir.

 add_action('woocommerce_order_status_changed', 'ts_auto_complete_by_payment_method');

function ts_auto_complete_by_payment_method($order_id)
{
  
  if ( ! $order_id ) {
        dönüş;
  }

  küresel $ürün;
  $sipariş = wc_get_order( $sipariş_kimliği);
  
  if ($order->data['status'] == 'işleniyor') {
        $payment_method=$order->get_payment_method();
        if ($payment_method!="kod")
        {
            $order->update_status('tamamlandı');
        }
      
  }
  
}

Burada, bir siparişin durumu değiştiğinde bir işlevi çağırmak için woocommerce_order_status_changed kancasını kullanacaksınız. Siparişin İşleniyor durumunda olup olmadığı kontrol edildikten sonra, yalnızca ödeme yöntemi Teslimatta Nakit değilse, sipariş durumu Tamamlandı olarak değiştirilecektir. WooCommerce, yani dört varsayılan ödeme yöntemine sahiptir. Doğrudan Banka Havalesi (bacs), Çek ödemeleri (çek), Teslimatta Nakit (kod) ve PayPal (paypal). Koşul belirttiğiniz ödeme yöntemine bağlı olarak, "bacs", "cheque", "cod", "paypal" gibi uygun kimliği kullanmanız gerekir.

Sanal ürünler için WooCommerce sipariş durumunu otomatik olarak Tamamlandı olarak ayarlayın

Sipariş durumunun otomatik olarak tamamlanmasını isteyeceğiniz bir diğer durum, siparişteki ürün veya ürünlerin sanal ürünler olmasıdır. Sanal ürünler, somut olmayan veya indirilebilir ürünlerdir. Bunun bir örneği, bir mağaza üyeliği aboneliği veya aboneliği satın alanlara indirimler sunan kupon olabilir.

automatically Complete WooCommerce orders when they go to the Processing status - Virtual Product Example - Store Membership
Sanal Ürün Örneği

Bir mağaza üyeliği aboneliğinin somut bir formu olmayabilir, bunun yerine bir son kullanma tarihi olabilir. Yazılım ve hatta elektronik sinema biletleri gibi indirilebilir ürünler de çevrimdışı bir varlıkları veya formları olmadığı için sanal ürünlerdir. Çoğu sanal üründe, "Teslimde Nakit" seçeneği hiçbir zaman yoktur. Ödemeler yerinde yapılır ve bu nedenle kullanılan ödeme yöntemlerini kontrol etme koşulunu dahil etmemek, bunun yerine yalnızca siparişteki tüm ürünlerin sanal ürün olup olmadığını kontrol etmek için bir koşul eklemek güvenli olacaktır.

 add_action('woocommerce_order_status_changed', 'ts_auto_complete_virtual');

işlev ts_auto_complete_virtual($order_id)
{
  
  if ( ! $order_id ) {
        dönüş;
  }
  
  küresel $ürün;
  $sipariş = wc_get_order( $sipariş_kimliği);
  
  if ($order->data['status'] == 'işleniyor') {
    
    $sanal_sıra = boş;

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

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

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

          $_product = $sipariş->get_product_from_item( $item );

          if ( ! $_product->is_virtual() ) {
            // sanal olmayan bir ürün bulduğumuzda döngüden çıkarız
            $sanal_sıra = yanlış;
            kırmak;
          } 
          başka {
            $sanal_sıra = doğru;
          }
       }
     }
   }

    // hepsi sanal ürünlerse tamamlandı olarak işaretle
    if ( $virtual_order ) {
      $order->update_status('tamamlandı');
    }
  }	
}

Burada, ts_auto_complete_virtual işlevimizi çağırmak için aynı kancayı kullanıyoruz. Siparişin İşleniyor durumunda olup olmadığını kontrol ettikten sonra, sanal bir ürün olup olmadığını görmek için siparişteki her bir ürünü incelemeniz gerekir.

Çözüm

Tipik bir WooCommerce siparişinde ürünler, nakliye, ücretler vb. gibi birçok öğe bulunur. Burada line_item ürünü ifade eder. Sanal olup olmadıklarını kontrol etmek için sadece ürünlerin tek tek getirilmesi gerekir. Bir öğe bile sanal bir ürün değilse, siparişin durumu Tamamlandı olarak işaretlenmez.

Ancak gereksinimlerinize bağlı olarak ve bu gönderideki ilk kod parçacığını kullanarak sipariş durumunu Tamamlandı olarak işaretlemek için daha fazla koşul ekleyebilirsiniz. Örneğin, sanal olmayan ürünler için bile Sipariş Durumunu Tamamlandı olarak işaretlemek istiyorsanız (bu ürünler için ödeme yapıldıysa), sanal olup olmadığını kontrol ettikten sonra ödeme yöntemine bir çek ekleyerek bunu yapabilirsiniz. ürün. Ancak bu kod parçacığı aracılığıyla, siparişin durumu ancak siparişteki tüm ürünler sanal ürünlerse Tamamlandı olarak ayarlanır.