Insertar en funtions.php
// Actualiza automáticamente el estado de los pedidos a COMPLETADO
add_action( 'woocommerce_order_status_processing', 'actualiza_estado_pedidos_a_completado' );
add_action( 'woocommerce_order_status_on-hold', 'actualiza_estado_pedidos_a_completado' );
function actualiza_estado_pedidos_a_completado( $order_id ) {
global $woocommerce;
//ID's de las pasarelas de pago a las que afecta
// bacs - Transferencia bancaria directa
// cheque - Pagos por cheque
// cod - Contra reembolso
// redsys - Redsys redirección
// paytpv - paycomet con Tarjeta
$paymentMethods = array( 'bacs', 'cheque', 'cod', 'redsys' ,'paytpv' );
if ( !$order_id ) return;
$order = new WC_Order( $order_id );
if ( !in_array( $order->payment_method, $paymentMethods ) ) return;
$order->update_status( 'completed' );
}
El código anterior se activa en la página de agradecimiento, cuando el cliente ya ha finalizado la compra y se le muestra toda la información con el resumen de su pedido.
En ese momento, el código anterior toma el ID del pedido y automáticamente cambia su estado a Completado
Una vez activado el sniper, muy recomendado desactivar el envió de correo Procesando tu pedido, sino llegaran 2 email seguidos el de procesando y el de completado.
Para desactivarlo entrar en Panel de administración > WooCommerce > Ajustes > Emails > Procesando tu pedido y deshabilitarlo.
Con esto conseguirás que no se envíe el primer email.