Cuando vendes productos virtuales en WooCommerce (como cursos online, archivos descargables o membresías), estos pedidos no requieren procesamiento físico ni envío.
Por defecto, WooCommerce deja estos pedidos en estado “Procesando”, lo que implica que tienes que marcarlos manualmente como “Completados” desde el panel de administración. Esto puede resultar tedioso, especialmente si vendes a gran escala.
Para evitar este paso manual, puedes automatizar el proceso con una función que detecte si un pedido es completamente virtual y lo marque como completado en cuanto se realiza.
Añade este fragmento en el archivo functions.php de tu tema hijo activo o en un plugin personalizado.
// Completar automáticamente los pedidos de productos virtuales en WooCommerce
add_action( 'woocommerce_thankyou', 'auto_complete_virtual_orders' );
function auto_complete_virtual_orders( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
// Verifica si todos los productos del pedido son virtuales
$virtual_order = true;
foreach ( $order->get_items() as $item ) {
$product = $item->get_product();
if ( ! $product || ! $product->is_virtual() ) {
$virtual_order = false;
break;
}
}
if ( $virtual_order ) {
$order->update_status( 'completed' );
}
}