Enviar un email personalizado al completar la orden | Código Woocommerce

Patricio Pantaleo para Paideia Studio
email personalizado

Email personalizado en Woocommerce

El siguiente código woocommerce te permite crear un email personalizado para enviar en un pedido cuando una orden se completa. 

A veces necesitas enviar una información muy específica para un producto en particular y esta es la solución.

Para añadir el código Woocommerce en tu instalación WordPress puedes hacerlo directamente en el archivo  functions.php de tu tema o mediante un plugin específico. Recomiendo utilizar el plugin Code Snippets ya que es de fácil manejo y permite mantener organizados los códigos en un solo lugar.

A veces los códigos que introduces pueden romper el sitio y mostrarte un error fatal en WordPress. Si esto pasa con algún código y lo has agragado mediante el plugin Code Snippets puedes activar el modo seguro del plugin para que te permita desactivarlo si no puedes ingresar a la sección de administrador. Para esto, en el archivo wp-config.php de tu instalación coloca el siguiente código:

define('CODE_SNIPPETS_SAFE_MODE', true);

Ahora bien, si está todo listo, el código Woocommerce para enviar un email personalizado cuando el pedido cambie a Completado y para un producto específico es:

				
					add_action( 'woocommerce_order_status_completed', 'send_custom_email_for_specific_product' );
function send_custom_email_for_specific_product( $order_id ) {
    $order = wc_get_order( $order_id );
    $items = $order->get_items();
    
    foreach ( $items as $item ) {
        $product_id = $item['product_id'];
        
        if ( $product_id == 123 ) {
            $mailer = WC()->mailer();
            $subject = 'Gracias por su compra';
            $message = 'Gracias por comprar en nuestra tienda. Esperamos que disfrutes de tu compra. ¡Gracias de nuevo!';
            $recipient = $order->get_billing_email();
            $headers = "Content-Type: text/html\r\n";
            
            $mailer->send( $recipient, $subject, $message, $headers );
        }
    }
}

				
			

Asegúrate de cambiar el ID del producto a la línea 9 (if ( $product_id == 123 )) por el ID de tu producto específico. Este código utiliza el template por default de Woocommerce. Si lo que necesitas es que no utilice el template de Woocomerce, puedes probar el siguiente código:

				
					add_action( 'woocommerce_order_status_completed', 'send_custom_email_for_specific_product' );
function send_custom_email_for_specific_product( $order_id ) {
    $order = wc_get_order( $order_id );
    $product_id = 123; // Replace with the ID of your specific product

    // Iterate through the order items
    foreach ( $order->get_items() as $item_id => $item ) {
        // Check if the item is the specific product
        if ( $item->get_product_id() == $product_id ) {
            // Get the customer email address
            $to = $order->get_billing_email();
            
            // Email subject and content
            $subject = 'Custom email for specific product';
            $message = 'This is a custom email for the specific product with ID ' . $product_id;

            // Send the email
            wp_mail( $to, $subject, $message );

            // No need to continue looping
            break;
        }
    }
}

				
			

¿Funcionó para ti? Puedes comentar debajo si este código sigue funcionando. Si quieres implementaciones o desarrollos en WordPress o Woocommerce puedes contactarnos.

Deja una respuesta

También te puede interesar

Formulario de revisión modelo