Webové zákusky

Uzavřít objednávky zdarma

9. 8. 2022

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

Další články

Ninja forms – co se hodí vědět

Ninja Forms je skvělý plugin pro formuláře. A to hned z několika důvodů: Skvělý drag&drop editoraria atributy, což je skvělé pro přístupnost webu,umí ukládat odpovědi, zvládne poslat tolik...

WooCommerce – změna textu tlačítka

Tzv. "Tlačítková novela" s sebou přináší pro e-shopy řadu změn a jednou z nich je změna textu tlačítka v posledním kroku nákupu (tak novela dostala svůj název). A kdo je připraven - není překvapen. Jak takové tlačítko přejmenovat?