Soporte » Plugins y Hacks » WooCommerce » correo de creacion de cuenta cuando el pedido se complete

  • Resuelto ele

    (@luishgc93)


    Hay alguna forma de retrasar el envio del correo de creacion de cuenta para cuando el pedido se haya completado?

    esque woocommerce por defecto envía ese correo si o si, no se como se podría enviar después de que el pedido se haya completado ? gracias !

    Es decir, en la plantilla de customer-new-account.php comparar si el pedido está completado para que se envie?

    • Este debate fue modificado hace 9 meses por ele.
    • Este debate fue modificado hace 9 meses por ele.
Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Yordan Soares

    (@yordansoares)

    Hola de nuevo @luishgc93,

    WooCommerce tiene un gancho que se ejecuta después de que el pedido se ha completado: woocommerce_payment_complete. Podrías escribir un método o función donde se compruebe si el usuario ha hecho un pedido previamente y, si no es así, le envíe el correo de «nuevo usuario». Te doy una idea:

    
    // Preparamos la función utilitaria para comprobar si el usuario actual ha hecho al menos una compra
    function wc_pedidos_cliente() {
        // Obtenemos todos los pedidos del usuario (si los hay)
        $customer_orders = get_posts( array(
            'numberposts' => -1,
            'meta_key'    => '_customer_user',
            'meta_value'  => get_current_user_id(),
            'post_type'   => 'shop_order', // Tipo de contenido «pedidos» de WC
            'post_status' => 'wc-completed' // Solo pedidos con el estado «completado»
        ) );
    
        // Devuelve el número de pedidos completados
       return count($customer_orders); 
    }
    
    // Preparamos la función para enviar el correo a los nuevos clientes si completan el primer pedido
    function wc_enviar_mail_nuevo_cliente() {
      // Comprobamos si el cliente tiene pedido
      if (wc_pedidos_cliente() == 1) {
        // Si se cumple la condición...    /
        $wc = new WC_Emails();
        // ...enviamos el correo de nueva cuenta
        $wc->customer_new_account($user_id);
      }
    }
    add_action('woocommerce_payment_complete', 'wc_enviar_mail_nuevo_cliente');
    

    He leído un poco antes de escribir el código, sin embargo no lo he probado. Si tienes un sitio de pruebas, puedes añadirlo al archivo functions.php de tu tema o a un plugin personalizado y ver cómo te va.

    Por cierto, ya en esta otra respuesta te había respondido cómo desactivar el mensaje que se envía justo después de crear la cuenta.

    ¡Espero haberte sido de ayuda!

    ele

    (@luishgc93)

    @yordansoares gracias por responder ! pero no funciona, el correo de creacion de nueva cuenta sigue llegando cuando el pedido está en espera.

    Yordan Soares

    (@yordansoares)

    ¿Usaste este código para desactivar los correos?:

    // Desactivar correos electrónicos de aviso de nuevo usuario
    if ( ! function_exists( 'wp_new_user_notification' ) ) :
        function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) {
            return;
        }
    endif;
    ele

    (@luishgc93)

    si, y sigue llegando el correo de creación de cuenta cuando el pedido no se ha completado.
    También probé a deshabilitar el correo desde la pestaña de correos, pero entonces no se manda ni cuando el pedido se completa.

    Yordan Soares

    (@yordansoares)

    Intenta usar este código:

    // WooCommerce: Desactivar correo electrónico de aviso a nuevos usuarios
    function wc_desactivar_email_nuevo_usuario($email_class) {
      remove_action('woocommerce_created_customer_notification', array($email_class, 'customer_new_account'), 10, 3);
    }
    add_action('woocommerce_email', 'wc_desactivar_email_nuevo_usuario');

    Cuéntame si te funciona.

    ele

    (@luishgc93)

    @yordansoares
    funciona para deshabilitar el correo de creación de cuenta, pero ahora no llega el correo cuando el pedido se completa.
    Necesito que el correo de creacion de cuenta llegue cuando el pedido se ha completado.
    No se si será por la version de wordpress ? uso la V 5.3.2

    • Esta respuesta fue modificada hace 9 meses por ele.
    ele

    (@luishgc93)

    @yordansoares Necesitaria algo así , para que el usuario no reciba correos de creación de cuenta para un producto especificado :

    Pero este codigo no me funciona

    function change_email_recipient_depending_of_product_id( $recipient, $order ) {
        global $woocommerce;
        $items = $order->get_items();
        foreach ( $items as $item ) {
            $product_id = $item['product_id'];
            if ( $product_id == xxx ) {
                $recipient = '';
            }
            return $recipient;
        }
    }
    add_filter( 'woocommerce_email_recipient_customer_processing_order', 'change_email_recipient_depending_of_product_id', 10, 2 );
    • Esta respuesta fue modificada hace 9 meses por ele.
Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘correo de creacion de cuenta cuando el pedido se complete’ está cerrado a nuevas respuestas.