add_action( 'woocommerce_thankyou', 'tipwp_autocomplete_virtual_orders', 10, 1 );
function tipwp_autocomplete_virtual_orders( $order_id ) {
if ( ! $order_id ) return;
$order = wc_get_order( $order_id );
if ( ! $order || $order->get_status() !== 'processing' ) return;
$is_virtual_only = true;
foreach ( $order->get_items() as $item ) {
$product = $item->get_product();
if ( $product && ! $product->is_virtual() && ! $product->is_downloadable() ) {
$is_virtual_only = false;
break;
}
}
if ( $is_virtual_only ) {
$order->update_status( 'completed', __( 'Auto-completed virtual order by TipWP snippet.', 'woocommerce' ) );
}
}