Auto complete virtual products orders

add_action('woocommerce_thankyou', 'ahtozz_autocomplete_virtual_orders', 10, 1 );
function ahtozz_autocomplete_virtual_orders( $order_id ) {

if( ! $order_id ) return;
// Get order
  $order = wc_get_order( $order_id );
  $items = $order->get_items();
 
  $only_virtual = true;

foreach ( $items as $item ) {
 
  $product = wc_get_product( $item['product_id'] )
  $is_virtual = $product->is_virtual();
  $is_downloadable = $product->is_downloadable();
  
  if ( ! $is_virtual && ! $is_downloadable ) {
     $only_virtual = false;
  }
}
// true
if ( $only_virtual ) {
    $order->update_status( 'completed' );
   }
}

Leave a Reply