es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregue texto personalizado basado en el método de envío para ciertas notificaciones por correo electrónico de WooCommerce.

Estoy tratando de hacer que WooCommerce envíe diferentes correos electrónicos a los clientes dependiendo de si han seleccionado “Recogida” o cualquier método de entrega.

Si el cliente elige recoger, el correo electrónico “Procesando” debe indicarles que se les notificará una vez que esté listo y el correo electrónico “Completado” debe decirles que vengan a recogerlo.

Si el cliente elige la entrega, el correo electrónico “Procesando” debe indicarles que se les notificará cuando esté en camino y el correo electrónico “Completado” debe decirles que está en camino.

Actualmente, tengo el siguiente código y no aparece nada en ninguno de los correos electrónicos.

No estoy seguro si cuál es mi error, y tampoco estoy seguro si estoy utilizando los nombres de variables correctos para hacer referencia a mis métodos de envío.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas potenciales con este código.

    En primer lugar, no está claro dónde se define la variable $new_status, pero se hace referencia en el código. Asegúrese de definir esta variable y establecer el valor de estado correcto.

    En segundo lugar, es posible que la etiqueta del método de envío no sea una coincidencia exacta con lo que se está verificando en el código. En lugar de usar la etiqueta, intente usar el ID o slug del método de envío para determinar si el cliente ha seleccionado recoger o entregar.

    Finalmente, en lugar de usar echo para mostrar el contenido del correo electrónico, use las funciones de correo electrónico de WooCommerce para generar y enviar los correos electrónicos. Esto asegura que los correos electrónicos estén correctamente formateados y enviados a los destinatarios correctos.

    Aquí hay un ejemplo de código actualizado que aborda estos problemas:

    add_action ('woocommerce_email_customer_details', 'custom_email_customer_details', 15, 4);
    
    function custom_email_customer_details ($order, $sent_to_admin, $plain_text, $email)
    {
        $shipping_method = $order->get_shipping_method ();
        $pickup_method = 'recoger';
    
        // Verifique si se seleccionó el método de recogida
        if (strpos ($shipping_method, $pickup_method)! == false) {
            // Correo electrónico de procesamiento para recoger
            si ($order->get_status () === 'procesamiento') {
                $email_heading = __ ('Su pedido se está preparando para su recogida', 'woocommerce');
                $email_body = '<p> Recibirá una notificación cuando su pedido esté listo para ser recogido. </p>';
            } más {
                // Correo electrónico completado para recoger
                $email_heading = __ ('Su pedido está listo para ser recogido', 'woocommerce');
                $email_body = '<p> Vaya a la tienda para recoger su pedido. </p>';
            }
        } más {
            // Correo electrónico de procesamiento para entrega
            si ($order->get_status () === 'procesamiento') {
                $email_heading = __ ('Su pedido se está preparando para su entrega', 'woocommerce');
                $email_body = '<p> Recibirá una notificación cuando su pedido salga para su entrega. </p>';
            } más {
                // Correo electrónico completado para entrega
                $email_heading = __ ('Su pedido está en camino', 'woocommerce');
                $email_body = '<p> Su pedido está en camino. ¡Debería recibirlo pronto! </p>';
            }
        }
    
        // Generar y enviar correo electrónico
        if (!$ plain_text) {
            // Versión HTML del correo electrónico
            echo '<h2>' . $email_heading. '</h2>';
            echo $email_body;
        } más {
            // Versión de texto sin formato del correo electrónico
            echo $email_heading. "\ n \ n";
            echo strip_tags ($email_body);
        }
    }
    

    Este código determina el contenido de correo electrónico apropiado en función de si el cliente seleccionó recoger o entregar, y si el pedido todavía está en procesamiento o se ha completado. Usa el método get_shipping_method () para recuperar la etiqueta del método de envío, luego comprueba si la etiqueta contiene la cadena ‘recoger’ para determinar si el cliente ha seleccionado recoger.

    El correo electrónico está almacenado en variables, y luego se genera y envía el correo electrónico HTML o de texto sin formato apropiado utilizando las funciones de correo electrónico WooCommerce apropiadas.

Comments are closed.