Avisos
Vaciar todo

[Resuelto] Problema link checkout de usuarios registrados  

 
Antía
 Antía
Usuario eminente

Hola, tengo un problema con un link que genera woocomerce cuando se rellenan los datos en el Checkout para finalizar la compra. Si el usuario ya ha realizado una compra anteriormente, se ha registrado automáticamente, sino no se da cuenta y vuelve a realizar una compra con el mismo email, Woocomerce le avisa de que ya hay un usuario registrado con ese email, hasta ahí todo correcto, el problema es que el aviso dice: Ya hay una cuenta registrada con tu dirección de correo electrónico. por favor, accede, y el link de por favor accede no hace nada, no abre ni te lleva a ningún sitio, de hecho el enlace que pone es lasfloresdegreta.com/finalizar-compra/#

No se donde se puede editar ese link o xq razón no abre nada.

Contenido solo visible a usuarios registrados

Respondido : 08/01/2024 9:37 pm
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Antia,

Puedes mostrarnos donde te muestra este mensaje para poder ubicarlo mejor, también si es posible compártenos un usuario de pruebas, que solo tenga permisos de usuario para poder hacer nosotros una prueba e identificar mejor según el código por qué no te está redirigiendo.

Si necesitas enviar capturas recuerda que tienes a la mano la guia para poder compartirnos imagenes:

https://soporteforo.webempresa.eu/guia/subir-imagenes-a-consultas-en-foro/

Un saludo 🖐️ 

Respondido : 08/01/2024 11:12 pm

Antía
 Antía
Usuario eminente

@argenis

 hola, es al rellenar los datos para finalizar la compra, adjunto captura. Puedes hacer pruebas con antiamcp@hotmail.com

Captura de pantalla 2024 01 09 010322
Respondido : 09/01/2024 12:05 am
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Antia,

Puedes verificar agregando este codigo:

add_filter( 'woocommerce_registration_error_email_exists', function( $html ) {
$url = wc_get_page_permalink( 'myaccount' );
$url = add_query_arg( 'redirect_checkout', 1, $url );
$html = str_replace( 'Ya hay una cuenta registrada con su dirección de correo electrónico. Por favor Iniciar sesión', '<a href="'puedes escribir manualmente la url a donde quieres que redirija'"><strong>Texto personalizado para el enlace</strong></a>', $html );
return $html;
} );

Modificas los elementos que te señaló dentro del href, con respecto a donde ingresarlo puedes agregarlo al final de tu archivo functions.php, en tu panel, luego administrador de archivos > public_html > dominio > wp-content > themes > tema en uso > archivo functions.php.

Verifica y nos comentas.

Un saludo 🖐️ 

 

Respondido : 09/01/2024 12:57 am

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Antía
 Antía
Usuario eminente

@argenis hol, con ese código no me funciona, si lo pongo tal cual, y pongo un link para que cambie el enlace me sigue apareciendo el mensaje de antes, si elimino el enlace, xq realmente me bastaría con el aviso, ya que en el recuadro de abajo verde ya está la opción de logearse, me da el siguiente error en el recuadro rojo: Error procesando el pedido. Por favor, inténtalo de nuevo.

Realmente me serviría un código que remplazase el mensaje de: Ya hay una cuenta registrada con tu dirección de correo electrónico. por favor, accede, y que por favor accede no sea link, ya que pueden acceder desde el recuadro verde.

Respondido : 09/01/2024 8:55 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Antía.

Esto sucede porque el comportamiento predeterminado del proceso de validación de pago de WooCommerce verificará la dirección de correo electrónico ingresada por el usuario. Si esa dirección de correo electrónico coincide con un usuario registrado de WordPress existente, entonces WooCommerce no procesa el pedido hasta que el usuario inicie sesión.

Prueba  añadir lo siguiente al final del archivo functions.php o si utilizas algún plugin para añadir código como puede ser Code Snippets:

add_filter( 'woocommerce_checkout_posted_data', 'we_filter_checkout_posted_data', 10, 1 );
function we_filter_checkout_posted_data( $data ) {

$email = $data['billing_email'];

if ( email_exists( $email ) ) $data['createaccount'] = 0;

return $data;

}

 

Este código utiliza el filtro WooCommerce  woocommerce_checkout_posted_data para interceptar los datos del formulario de pago después de hacer clic en el botón Realizar el pedido, pero antes de que los datos se procesen.

Primero comprobará si el usuario ha iniciado sesión. Si es así, no necesitamos hacer nada.

Sin embargo, si el usuario no ha iniciado sesión, comprueba si existe una cuenta de WordPress que coincida con la dirección de correo electrónico. Si hay una cuenta existente, este código configura el usuario actual de WP para que coincida con el de la dirección de correo electrónico de facturación.

 

Espero que esto solucione el problema que estás teniendo, de no ser así por favor indícalo para que podamos seguir revisando que puede estar pasando.

 

Un saludo

Respondido : 09/01/2024 9:39 am

wpdoctor-revisa-la-salud-de-tu-wordpress

Antía
 Antía
Usuario eminente

@pepesolerhola, pongo el código y me sigue saliendo el mismo mensaje, no cambia nada. He borrado cache de la web y del navegador y nada.

Respondido : 09/01/2024 10:58 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Antía.

Por favor adjunta una captura para que podamos ver cómo estás añadiendo ese código y si hay algún error.

 

Un Saludo

 

Respondido : 09/01/2024 11:01 am

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Antía
 Antía
Usuario eminente

@pepesoler

Captura de pantalla 2024 01 09 122105b

 hola, adjunto captura.

Respondido : 09/01/2024 11:22 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Antía.

Ufff disculpa creo que me deje la mitad del codigo por añadir, prueba con este código:

add_filter( 'woocommerce_checkout_posted_data', 'filter_woocommerce_checkout_posted_data', 10, 1);
function filter_woocommerce_checkout_posted_data( $data) {
if ( is_user_logged_in()) {
return $data;
}
if ( !is_user_logged_in() && is_checkout()) {
$user = get_user_by('email', $data['billing_email']);if ( !empty($user->ID) ) {
wp_set_current_user($user->ID);
$data['createaccount'] = 0;
}
else {
$data['createaccount'] = 1;
}
}
return $data;
}

 

Revisa si se soluciona y nos comentas.

 

Un saludo

Esta publicación ha sido modificada el hace 11 meses 2 veces por Pepe
Respondido : 09/01/2024 12:10 pm

Cursos Gratuitos WordPress

Antía
 Antía
Usuario eminente

@pepesoler hola, ahora creo que funciona. Lo que pasa ahora es que no me dice que el usuario existe, lo que hace es dejarme comprar sin logearme digamos, pero aun así guarda los pedidos en la cuenta de usuario. Es un buena opción, así no tienen que meter la contraseña. ¿Es lo que tiene que hace el código no?

Respondido : 09/01/2024 10:29 pm
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Antia,

Básicamente es el comportamiento que nos comentas, es lo que buscabas? igualmente también tienes plugins para modificar esto de forma más sencilla sin código:

https://woo.com/document/smart-user-email-verification-5/

Antes de hacer cualquier compra recuerda que tienes que ver si es lo que buscas, también esto:

https://es.wordpress.org/plugins/emails-verification-for-woocommerce/

image

Un saludo 🖐️ 

Respondido : 09/01/2024 11:33 pm

Antía
 Antía
Usuario eminente

@argenis hola, con el código me va bien. Me parece más cómodo que el Woocomerce mediante el código ya detecte que el usuario está registrado y que este no tenga que meter la contraseña, ya que hay usuarios que no son conscientes de que se registraron la primera vez que compraron o que o recuerdan la contraseña.

Gracias

Respondido : 10/01/2024 9:18 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Antía.

Genial !!! Me alegra que lo solucionaras.

Lo que pasa ahora es que no me dice que el usuario existe

El código lo que hace en un primer momento es ver si esa cuenta de correo existe y si existe rellena todos los datos del usuario que coincida con ese correo y realiza el pedido, si la cuenta no existe entonces pasa al registro.

 

Cualquier consulta que tengas no dudes en comunicarlo.

 

Un Saludo

Respondido : 10/01/2024 9:26 am

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación