Si necesitas adjuntar en cada correo que mandas a tus clientes una imagen de branding con un código de descuento, un catálogo de productos en PDF o un vídeo personal dando las gracias… Estas en el post adecuado.
Como siempre os lo enseñaré mediante un plugin o código.
Índice
Adjuntar un archivo en un correo en específico
En este caso adjuntaremos en los correos que recibe el cliente de «procesando» y «completado» el archivo que nosotros hemos elegido de «medios».
Como siempre para añadir el código cópialo en el archivo functions.php de tu child theme o bien en tu plugin de funcionalidades Code Snippets como explico aquí.
/* Añadir archivo en correos de procesando y completado */
add_filter( 'woocommerce_email_attachments', 'dl_adjuntar_en_correos_woocommerce', 10, 4 );
function dl_adjuntar_en_correos_woocommerce( $attachments, $email_id, $order, $email ) {
$email_ids = array( 'customer_processing_order', 'customer_completed_order' );
if ( in_array ( $email_id, $email_ids ) ) {
$upload_dir = wp_upload_dir();
$attachments[] = $upload_dir['basedir'] . "/2021/07/url-de-ejemplo.pdf"; //IMPORTANTE: Cambia el enlace del archivo por el que quieras adjuntar
}
return $attachments;
}
Si lo queréis insertar en otros emails tenéis que cambiar el ID de los mails:
'cancelled_order' //pedido cancelado
'customer_completed_order' //pedido completado
'customer_processing_order' //pedido procesándose
'customer_invoice' //factura del cliente
'customer_new_account' //nueva cuenta de cliente
'customer_note' //notas al cliente
'customer_on_hold_order' //pedido en espera
'customer_refunded_order' //reembolso
'customer_reset_password' //restablecer contraseña
'failed_order' //pedido fallido
'new_order' //nuevo pedido
Adjuntar un archivo si compran un producto/s especifico/s
En el caso que solo queramos adjuntar un archivo en ciertos productos deberemos añadir este código modificando el ID del producto y el archivo:
add_filter( 'woocommerce_email_attachments', 'add_woocommerce_attachments_for_certain_product', 10, 3 );
function add_woocommerce_attachments_for_certain_product ( $attachments, $email_id, $email_order ){
$product_id = 11871; //Ponemos el ID del producto
$attachment_id = 99999; //El ID del archivo que queremos adjuntar.
if( $email_id === 'customer_processing_order' ){
$order = wc_get_order( $email_order );
$items = $order->get_items();
foreach ( $items as $item ) {
if ( $product_id === $item->get_product_id() ) {
$attachments[] = get_attached_file( $attachment_id );
}
}
}
return $attachments;
}
En este caso es para un mail de estamos procesando tu pedido.
Para más productos:
add_filter( 'woocommerce_email_attachments', 'add_woocommerce_attachments_for_certain_product', 10, 3 );
function add_woocommerce_attachments_for_certain_product ( $attachments, $email_id, $email_order ){
$product_id = array( 11871, 123, 456 ); // Añadir las IDs de los productos o variaciones
$attachment_id = 99998; //El ID del archivo que queremos adjuntar.
if( $email_id === 'customer_completed_order' ){
$order = wc_get_order( $email_order );
$items = $order->get_items();
foreach ( $items as $item ) {
if ( in_array( $item->get_product_id(), $product_id ) ) {
$attachments[] = get_attached_file( $attachment_id );
}
}
}
return $attachments;
}
En este caso pondríamos con comas todos los productos que necesitamos.
(Queda poner cómo encontrar el ID)
Plugins recomendados
Si te lías o no entiendes de código y prefieres un plugin te dejo algunos que he probado y funcionan. Incluso la versión PRO puede hacer muchas más cosas de las explicadas.
- Plugin oficial de WooCommerce de archivos adjuntos (29$)
- Product Attachment for WooCommerce de DotStore(Gratis)
- Versión pro del anterior (119$) Viene bien si queremos adjuntar archivos en determinadas categorías o productos y mucho más.
Ejemplos e ideas que podemos adjuntar
Compartir estos archivos por correo electrónico nos puede servir para los siguientes casos:
- Guías prácticas de un producto en concreto
- Videos explicativos de cómo procesamos el pedido o como funciona el envío
- Vales o Cupones para canjear
- Imágenes del producto (diferentes vistas)
- Adjuntar las políticas de reembolso para informar al cliente
- Programa de procesamiento de pedidos
- Aviso de retraso con el motivo especificado
- Confirmación de cancelación
Espero que os haya servido. Cualquier duda como siempre os leo en comentarios.
y para adjuntar varios archivos? $attachments[] = $upload_dir[‘basedir’] aqui separado por comas, o uno por linea