Powered by Smartsupp
Webařské tipy

Uzavřít objednávky zdarma

Ušetřete si práci a uzavírejte virtuální objednávky s cenou 0 automaticky.

Určitě se vám na e-shopu stalo (pokud ho máte nebo spravujete), že objednávky zdarma musíte nějakým způsobem dokončit. Je velká škoda, že tuto funkci – tj. změnu ze stavu Zpracovává se (“Processing“) na Dokončeho (“Completed“) – WordPress sám automaticky neumí. Naštěstí existuje jednoduchý způsob jak ho to naučit.

Následující kód stačí zkopírovat do functions.php (ideálně do Child theme):

  • pozn: Funguje to pouze pro virtuální produkty (nikolik fyzické).
function woo_auto_complete_virtual_orders($order_id) {
  if ( ! $order_id ) {
        return;
  }
  
  global $product;
  $order = wc_get_order( $order_id );
  
  if ($order->data['status'] == 'processing') {
    
    $virtual_order = null;
    if ( count( $order->get_items() ) > 0 ) {
      foreach( $order->get_items() as $item ) {
        if ( 'line_item' == $item['type'] ) {
          $_product = $order->get_product_from_item( $item );
          if ( ! $_product->is_virtual() ) {
            // once we find one non-virtual product, break out of the loop
            $virtual_order = false;
            break;
          } 
          else {
            $virtual_order = true;
          }
       }
     }
   }
    // if all are virtual products, mark as completed
    if ( $virtual_order ) {
      $order->update_status( 'completed' );
    }
  }    
}

add_action('woocommerce_order_status_changed', 'woo_auto_complete_virtual_orders');

Zdroje

Jitka Klingenbergová

Jitka Klingenbergová

Absolventka ČVUT FIT oboru Informatika | Programátorka | Webová vývojářka, konzultantka a mentorka
tvorime@vyladeny-web.cz

Líbil se vám článek? Pošlete ho dál:

Pravidelná dávka užitečných tipů až do schránky