Cuando no se reciben correos de los pedidos cancelados en Woocommerce

Recientemente en uno de mis sitios web me encontré con este problema. Que el administrador recibía por email correctamente los pedidos finalizados, pero no ocurría lo mismo con los pedidos cancelados. Y aunque puede ser un fallo al que otros no le darían la mayor importancia no ocurría lo mismo con mi cliente, ya que aprovechaba el aviso de estos pedidos cancelados para contactar con el comprador y consultarle si había tenido algún problema durante el proceso de compra.

Correos no Recibidos

Así que me puse manos a la obra tratando de subsanar el error, que comenzó cuando se actualizó la versión de WordPress, Woocommerce, y de los plugins principales. El primer paso fue probar con diferentes versiones de WordPress y Woocommerce, pero el fallo continuaba ahí. El siguiente, desactivar los plugins relacionados con Woocommerce, y/o actualizarlos… pero nada. Los correos con envíos cancelados continuaban sin recibirse.

Así que buscando y haciendo diferentes pruebas finalmente encontré esta efectiva solución. Se trata de acceder al archivo funtions.php de nuestro theme de WordPress, y añadir el siguiente código:

add_action('woocommerce_order_status_changed', 'cancelled_order_email_notifications', 10, 4 );
function cancelled_order_email_notifications( $order_id, $old_status, $new_status, $order ){
    // Only when order status is changed to 'cancelled'
    if ( $new_status != 'cancelled' ) return;

    // Send cancelled email notification
    WC()->mailer()->get_emails()['WC_Email_Cancelled_Order']->trigger( $order_id ); 
}

En el caso de que queramos que dicho aviso se reciba también en el correo del cliente podemos añadir este código

function wc_cancelled_order_add_customer_email( $recipient, $order )
{ 
 return $recipient . ',' . $order->billing_email; 
} 
add_filter( 'woocommerce_email_recipient_cancelled_order', 'wc_cancelled_order_add_customer_email', 10, 2 ); 
add_filter( 'woocommerce_email_recipient_failed_order', 'wc_cancelled_order_add_customer_email', 10, 2 );

Unas sencillas líneas de código que pueden ayudarnos a resolver un complicado problema

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta