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.
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 5 años 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 5 años por
ele.