• 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 4 años, 1 mes por ele.
    • Este debate fue modificado hace 4 años, 1 mes por ele.
Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • 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!

    Iniciador del debate ele

    (@luishgc93)

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

    ¿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;
    Iniciador del debate 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.

    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.

    • Esta respuesta fue modificada hace 4 años, 1 mes por Yordan Soares.
    Iniciador del debate 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 4 años, 1 mes por ele.
    Iniciador del debate 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 4 años, 1 mes 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.