Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

266
Vistas
Envíe una notificación por correo electrónico al usuario cuando esté en la página de pago de WooCommerce y tenga productos en el carrito

Necesito poder enviar un correo electrónico al usuario cuando está en el proceso de pago, básicamente cuando está a punto de realizar la compra.

Agregué este código a mi functions.php pero sucede que envía el correo más de 1 vez de manera errática, creo que es debido a los condicionales que declaré pero no estoy muy seguro.

Aquí está el código:

 if (is_user_logged_in() && !WC()->cart->is_empty()) { /*the current user data*/ $current_user = wp_get_current_user(); $email = $current_user->user_email; $name = $current_user->user_firstname; /*the mail structure*/ $to = $email; $subject = "¡Hola - " . $name . "!, tu compra está casi lista."; $body = ' //the mail body '; $headers = array('Content-Type: text/html; charset=UTF-8'); wp_mail($to, $subject, $body, $headers); } /*endif*/ } add_action('woocommerce_after_shop_loop_item', 'send_mail_when_is_in_checkout');
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El woocommerce_after_shop_loop_item no tiene nada que ver con la página de pago, pero se ejecuta en la página de la tienda; en su lugar, debe usar un enlace que solo se aplica a la página de pago, por ejemplo, woocommerce_before_checkout_form

Para evitar mensajes de error, es mejor verificar si WC->cart está realmente disponible antes de usarlo

Entonces obtienes:

 function action_woocommerce_before_checkout_form() { // Only logged in users if ( ! is_user_logged_in() ) return; // WC Cart if ( WC()->cart ) { // Cart NOT empty if ( ! WC()->cart->is_empty() ) { // The current user $current_user = wp_get_current_user(); $email = $current_user->user_email; $name = $current_user->user_firstname; // NOT empty if ( ! empty ( $email ) && ! empty ( $name ) ) { // The mail structure $to = $email; $subject = sprintf( __( 'Hello %s, your message', 'woocommerce' ), $name ); $body = __( 'The mail body', 'woocommerce' ); // Headers $headers = array( 'Content-Type: text/html; charset=UTF-8' ); // Sends an email, similar to PHP's mail function wp_mail( $to, $subject, $body, $headers ); } } } } add_action( 'woocommerce_before_checkout_form', 'action_woocommerce_before_checkout_form' );

Opcional: para enviar notificaciones por correo electrónico con el mismo diseño de las otras notificaciones por correo electrónico de WooCommerce

Reemplazar

 // NOT empty if ( ! empty ( $email ) && ! empty ( $name ) ) { // The mail structure $to = $email; $subject = sprintf( __( 'Hello %s, your message', 'woocommerce' ), $name ); $body = __( 'The mail body', 'woocommerce' ); // Headers $headers = array( 'Content-Type: text/html; charset=UTF-8' ); // Sends an email, similar to PHP's mail function wp_mail( $to, $subject, $body, $headers ); }

Con

 // NOT empty if ( ! empty ( $email ) && ! empty ( $name ) ) { // Mailer $mailer = WC()->mailer(); // To, subject, message $to = $email; $subject = __( 'My subject', 'woocommerce' ); $message_body = __( 'My message', 'woocommerce' ); // Message head and message body $message = $mailer->wrap_message( sprintf( __( 'Hello %s', 'woocommerce' ), $name ), $message_body ); // Headers $headers = 'Content-Type: text/html\r\n'; // Send an email $mailer->send( $to, $subject, $message, $headers ); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda