Personalización de la notificación de correos electrónicos de procesamiento de clientes en WooCommerce

3 minutos de lectura

avatar de usuario
carl saptarshi

Soy muy nuevo en WordPress y he creado una tienda de comercio electrónico con WooCommerce.

Después de que el cliente realiza un pedido, recibo un correo electrónico y el cliente recibe un correo electrónico, uno para mí para decir lo que ha pedido y otro para ellos como un correo electrónico de agradecimiento.

Dentro de este correo electrónico de agradecimiento, en mi archivo functions.php, he aprendido a cambiar el asunto del encabezado para incluir su nombre como este:

//add the first name of the person to the person getting the reciept in the subject of the email. 
add_filter('woocommerce_email_subject_customer_processing_order','UEBC_change_processing_email_subject', 10, 2);

function UEBC_change_processing_email_subject( $subject, $order ) {
global $woocommerce;
$subject="Thanks for your " . get_bloginfo( 'name', 'display' ) . ' Order, '.$order->billing_first_name .'!';
return $subject;
}

El fragmento de código anterior funciona correctamente y solo se muestra al cliente, no a mí. por ejemplo, “gracias por tu pedido ABCD Pedido de ropa John!”. Dentro del cuerpo del correo electrónico, estoy tratando de hacer esto personal como un pequeño mensaje de agradecimiento, sin embargo, cuando hago el mensaje, estoy usando el gancho:

add_action( 'woocommerce_email_before_order_table', 'custom_add_content', 20,1 );

Sé que desde que estoy usando el woocommerce_email_before_order_table hook, la función personalizada se enviará en el cuerpo del correo electrónico tanto al cliente como a mí.

Me preguntaba, ¿hay un enlace que proporciona Woocommerce para que la función personalizada solo se envíe al cliente dentro del cuerpo del correo electrónico?

Por ejemplo: woocommerce_email_header_customer_processing_order ¿O algo por el estilo?

Gracias

Para agregar algo de contenido personalizado usando woocommerce_email_before_order_table anzuelo y apuntando solo al notificación de correo electrónico de “pedido de procesamiento” del clientedeberías probar esto:

add_action( 'woocommerce_email_before_order_table', 'custom_content_to_processing_customer_email', 10, 4 );
function custom_content_to_processing_customer_email( $order, $sent_to_admin, $plain_text, $email ) {

    if( 'customer_processing_order' == $email->id ){

        // Set here as you want your custom content (for customers and email notification related to processing orders only)
        echo '<p class="some-class">Here goes your custom content… </p>';

    }

}

El código va en el archivo function.php de su tema secundario activo (o tema). O también en cualquier complemento de archivos php.

Este código está probado y funciona.

  • genial, gracias funciono. Por curiosidad, ¿cuál es el propósito de incluir estos 4 argumentos en la función cuando solo se usa $email?

    – Carl Saptarshi

    6 de enero de 2017 a las 0:40


  • Como $email es el cuarto y último argumento, usted no puedo eliminar otrosy es posible que en el futuro necesite agregar algunas condiciones más o algún código basado en los otros argumentos (especialmente en el primero)… Lo más importante es que esto funcione para usted, ¿o no?

    – LoicTheAztec

    6 de enero de 2017 a las 8:14

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad