Modificar email new-order-admin.php
-
Buenas tardes,
Necesito modificar esta plantilla de email para que solo envié el correo electrónico del cliente, el producto comprado y 2 custom fields que he añadido en el proceso de finalizar compra.
No consigo hacerlo, y estropeo el proceso de finalizar compra de la página.
Me gustaría que el email quedase de la siguiente forma:
Nuevo pedido #153738(numero de pedido)
Producto: todo en 1
Email: ejemplo@gmail.com
Usuario telegram: billing_usuario_telegram
Usuario tradingview: billing_usuario_tradingview
La página con la que necesito ayuda: [accede para ver el enlace]
-
Hola, antes de nada acuérdate de tener copia de web + BD antes de meter mano al código, ya que parece que estás tratando de personalizar la plantilla de correo electrónico
new-order-admin.php
para un proceso de finalización de compra en tu sitio web.
Aquí te proporcionaré una guía general sobre cómo puedes lograrlo.- Ubicación de la plantilla: Primero, localiza el archivo
new-order-admin.php
en tu directorio de temas de WordPress. Usualmente, esta plantilla se encuentra en la carpetawoocommerce/emails/
de tu tema. - Modificación de la plantilla: Abre el archivo
new-order-admin.php
y busca la sección donde se generan los detalles del pedido. Esta sección suele ser un bloque de código que genera y muestra la información del pedido. - Modificar la plantilla: Para lograr el formato deseado, deberás extraer la información específica del pedido y mostrarla en el correo electrónico. Puedes usar funciones de WooCommerce para obtener esta información. A continuación, te doy un ejemplo de cómo podría verse el código modificado:
<?php/** * New Order email * * This template can be overridden by copying it to yourtheme/woocommerce/emails/new-order-admin.php. */if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.}$order = wc_get_order( $order_id );// Obtener información específica del pedido$order_number = $order->get_order_number();$product_name = ''; // Aquí debes obtener el nombre del producto comprado$customer_email = $order->get_billing_email();$custom_field_telegram = ''; // Aquí debes obtener el valor del campo personalizado de Telegram$custom_field_tradingview = ''; // Aquí debes obtener el valor del campo personalizado de TradingView?><?php do_action( 'woocommerce_email_header', $email_heading, $email ); ?><p><?php printf( __( 'Nuevo pedido #%s', 'woocommerce' ), $order_number ); ?></p><p><?php printf( __( 'Producto: %s', 'woocommerce' ), $product_name ); ?></p><p><?php printf( __( 'Email: %s', 'woocommerce' ), $customer_email ); ?></p><p><?php printf( __( 'Usuario telegram: %s', 'woocommerce' ), $custom_field_telegram ); ?></p><p><?php printf( __( 'Usuario tradingview: %s', 'woocommerce' ), $custom_field_tradingview ); ?></p><?php do_action( 'woocommerce_email_footer', $email ); ?>
- Guardar y probar: Después de hacer las modificaciones, guarda el archivo y realiza pruebas para asegurarte de que el correo electrónico se genera correctamente y muestra la información que deseas.
Recuerda que este es solo un ejemplo y que debes adaptar el código a tu caso específico, obteniendo los valores correctos para el nombre del producto, los campos personalizados y cualquier otro detalle que necesites mostrar en el correo electrónico.
Ya me cuentas que tal
Hola @azorin3,
Si modificas el archivo new-order-admin.php en el plugin de WooCommerce, perderás los cambios que hayas hecho cada vez que actualices el plugin a una nueva versión.
Así que si estás usando un tema hijo, puedes crear ese archivo new-order-admin.php replicando la ruta que tenía en WooCommerce, pero en el tema hijo y ahí, puedes modificar el archivo a tu gusto, más info aquí: https://wordpress.stackexchange.com/questions/290301/how-to-change-woocommerce-new-order-email
Aún así, te recomiendo que uses los hooks de WooCommerce para modificar los emails, en estos dos artículos puedes ver la lista que hay disponible para modificar los emails:
https://www.cloudways.com/blog/how-to-customize-woocommerce-order-emails/
https://woocommerce.com/es-es/posts/how-to-customize-emails-in-woocommerce/Si nos explicas que lo que has hecho que no te ha funcionado, podremos tener una mejor idea para ayduarte a conseguirlo.
Espero que los enlaces de arriba te ayuden! Cuéntanos y así podrás ayudar a otras personas que aprendan con tu experiencia 🙂Muchas gracias por vuestros comentarios, la verdad es que soy nuevo en esto y no tengo ni idea de que es lo que tengo que hacer para no fastidiar el proceso.
Sé que tengo que hacerlo desde un tema hijo, pero cuando modifico el email me estropea el proceso, os dejo el código que puse:
<?php /** * Admin new order email * * This template can be overridden by copying it to yourtheme/woocommerce/emails/admin-new-order.php. * * HOWEVER, on occasion WooCommerce will need to update template files and you * (the theme developer) will need to copy the new files to your theme to * maintain compatibility. We try to do this as little as possible, but it does * happen. When this occurs the version of the template file will be bumped and * the readme will list any important changes. * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates\Emails\HTML * @version 3.7.0 */ defined( 'ABSPATH' ) || exit; /* * @hooked WC_Emails::email_header() Output the email header */ do_action( 'woocommerce_email_header', $email_heading, $email ); $order_items = $order->get_items(); $product_name = $order_items[0]->get_name(); $billing_email = $order->get_billing_email(); $customer_note = $order->get_customer_note(); $billing_first_name = $order->get_billing_first_name(); ?> <p><?php printf( esc_html__( 'Nuevo pedido: #%d', 'woocommerce' ), $order->get_order_number() ); ?></p> <p><?php printf( esc_html__( 'Producto: %s', 'woocommerce' ), $product_name ); ?></p> <p><?php printf( esc_html__( 'Email: %s', 'woocommerce' ), $billing_email ); ?></p> <p><?php printf( esc_html__( 'Usuario_Telegram: %s', 'woocommerce' ), $customer_note ); ?></p> <p><?php printf( esc_html__( 'Usuario_Tradingview: %s', 'woocommerce' ), $billing_first_name ); ?></p> <?php /* * @hooked WC_Emails::email_footer() Output the email footer */ do_action( 'woocommerce_email_footer', $email ); ?>
Pero este código, hacia que en la página de finalizar compra apareciese el error «Error procesando el pedido. Por favor, inténtelo de nuevo».
Os adjunto el email que recibo como predeterminado y como me gustaría que quedase.
La segunda imagen es editada, ya que no consigo ni acercarme.
PD: al añadir el código no se enviaba el email modificado, seguía recibiendo el email predeterminado de wordpress.
Gracias por la info detallada, @azorin3 🙂
Entonces, si no sabes editar el código, te recomiendo que uses un plugin para personalizar los emails de WooCommerce.
Aquí tienes una guía sobre cómo personalizar los emails de WooCommerce con el plugin de MailPoet:https://www.mailpoet.com/blog/woocommerce-email-customizer/
Cuéntanos si lo consigues resolver de esta manera! - Ubicación de la plantilla: Primero, localiza el archivo
- El debate ‘Modificar email new-order-admin.php’ está cerrado a nuevas respuestas.