Vuelvo al ataque con el mismo problema que tuve conversando con Pepe.
El tema es el siguiente...tengo configurado mi WC para que puedan comprar como invitado, pero cuando un cliente ya ha comprado en el pasado y no lo recuerda..., al rellenar los datos en el checkout, cuando le da a finalizar compra la página le hará un scroll hacia la parte superior indicando que ya hay una cuenta existente con esa dirección de correo. Literalmente el mesaje de error de Woocommerce es este:
Si os fijáis el final de la frase es un enlace, cuyo código html es el siguiente (lo veo inspeccionando con el botón derecho): <a href="#" class="showlogin">Por favor, accede.</a>
Es decir, ese enlace de Por favor, accede debería desplegar hacia abajo mostrando los campos de usuario y contraseña del cliente, para que sin salir de la página acceda.
Pues bien, yo nunca ví esto, encima utilizo el tema Storefront.
Pepe me facilitó un fragmento de código que podía parchear el problema, de manera que aunque el cliente ya estuviera registrado le dejaría realizar el pedido sin mostrar ningún mensaje de error. Hasta ahí bien, pero..., ahora, tras utilizarlo unos días me veo con otro problema y es que esos pedidos que deja realizar no los vincula a la cuenta del cliente ya creada, por lo que si el cliente entra en su cuenta no los ve.
El fragmento de código es este:
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;
}
Necesito o bien que funcione el mensaje de error desplegando ese enlace y muestre los campos de ingreso de los datos del cliente. O bien un fragmento de código que cree una cuenta de usuario si no existe, deje realizar el pedido aunque sea un cliente registtrado y que vincule toso los pedidos en su cuenta.
Adjunto capturas para un mejor entendimiento.
Contenido solo visible a usuarios registrados
Hola Tomás.
Puedes enviarnos un usuario cliente de prueba existente que podamos revisar y probar lo que sucede cuando se intenta compra un producto? de esta forma podemos revisarlo con maypr detalle.
Un Saludo
El tema es...., que no veo el momento porque a todas horas tengo clientes y lo tengo solucionado con una parche de momento.
Lo ideal sería el fragmento de código que me pasó Pepe, pero vinculando los pedidos a la cuenta que ya tiene asociada a WC. Existe ese fragmento?
El que me pasó es este:
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;
}
Resuelve muy bien el que el cliente pueda finalizar el pedido sin mostrar el mensaje de error que ya existe una cuenta. Sin embargo, los pedidos en su cuenta no aparecen.
Espero haberme explicado bien.
Hola Tomas.
El código que te indique no afecta a lo que comentas, ese codigo solo revisa si hay algún cliente con esa cuenta, si el cliente existe no le pide que acceda, rellena los datos con los del cliente.
De todas formas lo estoy probando y veo que puedo realizar el pedido teniendo ya una cuenta y no aparece ese aviso:
Un Saludo
Hola Pepe, el aviso sale justo después de pulsar el botón de realizar el pedido, mientras no. Si quieres prueba con la pasarela transferencia bancaria y saldrá.
Ahora mismo tu fragmento (que funciona) lo tengo desactivado. ¿Por qué lo tengo desactivado?, porque reitero, aunque funciona de maravilla dejando que el cliente ya registrado realice la compra sin mensaje de error ni nada...., en su cuenta que ya tenía con su historial de compras, etc.., ya no reflejará este último pedido realizado, no vincula la información a su cuenta ya registrada.
Lo he comprobado. No sé si se podrá añadir a ese fragmento algo adicional. Mira este hilo con exactamente lo mismo (pero este código es muy viejo y creo que no funciona tampoco):
Hola Tomás,
¿He estado verificando el sitio web pero no logro verificar como añades este enlace en tus opciones de WooCommerce, tienes algún código añadido en el function.php que muestre este error a los usuarios cuando intentan comprar?
Ten en cuenta que esta funcionalidad no es una característica nativa de WooCommerce por lo que debe estar siendo añadida por algo adicional, revisa si entre los códigos de tu function tienes algo añadido y nos indicas que es para revisarlo a detalle.
Un Saludo
Buenas noches y perdón por la demora. No es una funcionalidad nativa porque tuve que hacer un apaño provisional. Lo que hice fue traducir woocomerce y justo en ese enlace puse: <a rel="nofollow ugc" href=" https://waterluxe-osmosis.es/my-acount/ ">Por favor, accede. Haz clic aquí</a>
Por lo menos el cliente retorna al formulario de registro y puede introducir sus credenciales.
Pero ese apaño es un rollo porque el cliente se pierde y vuelve a empezar.
Lo acabao de dejar de origen y puedes comprobar que cuando haces clic ahí (deberia abrirse los campos de usuario y contraseña sin salir del checkout), pero en mi caso no hace nada. Si quieres puedes formular un pedido sin registrarte bajo el usuario: clientecomprasweb@yahoo.com y podrás comprobar lo que te digo. Haz la compra como invitada (puedes hacerlo porque lo tengo así configurado), no te va a pedir contraseña. Por método de pago transferencia bancaria y cuando en el último paso del checkout detecte que esa cuenta ya está registrada, le has al enlace de Por favor, accede y la página no se inmuta.
Es como si algo impidiera esa llamada??
Hola Tomás,
Entiendo, lo primero elimina esta traducción que añadiste y deja la opción por defecto de WooCommerce, luego de ello revisa si funciona el enlace, si es así coméntanos para revisarlo y comprobar qué alternativas puede funcionar.
De manera general, prueba utilizar el siguiente condigo en tu function.php y comprueba como se muestra en enlace
add_filter( 'woocommerce_registration_error_email_exists', function ( $message ) {
return preg_replace( '/href="#" class="showlogin"/', sprintf( 'href="%s"', wp_login_url() ), $message );
} );
Un Saludo
Ese código me lleva a la página de inicio de Wordpress, ni siquier a la de WC.
Es que igual es difícil de entender lo que quiero explicar. Te pongo un enlace de una web con Woocommerce que funciona como debe de ser: https://aquadux.es/
En esa página estoy registrado bajo el usuario: pedroisidoroortiz@hotmail.com
Simula una compra sin loguearte con pago por transferencia, inventate todos los datos en los campos del checkout y cuando detecte la web que esa cuenta está registrada verás el comportamiento correcto y original de WC. cuando hagas clic en el enlace que dice.... Ya hay una cuenta...., por favor, accede. Cuando hagas clic en por favor accede, sin salir del checkout, sin redirección a ninguna parte, se abrirá ahí mismo el formulario de inicio de sesión, como un iframe.
Por cierto, el error no es de ninguna funcionalidad personalizada, ya que he renombrado la carpte function.php y he realizado las comprobaciones y nada.
Se me olvidó poner: Simula una compra sin loguearte con pago por transferencia, inventate todos los datos en los campos del checkout (excepto la del email, ahí pones pedroisidoroortiz@hotmail.com )
Hola Tomás,
Intento simular la compra en la web que nos compartes pero no me abre.
Es posible que este conflicto lo esté generando algo adicional o como te comento la propia traducción de woocommerce, puedes probar borrar la traducción de forma temporal y ver como funciona, también puedes probar desactivar los plugins que interfieran con el login de WooCommerce y ver si este genera algún conflicto.
Es muy complicado revisar esta opción en tu sitio web, ya que no podemos entrar a revisarlo, si quieres que alguien entre a tu sitio web y revise que puede suceder te recomiendo contactes con nuestro directorio de colaboradores quienes pueden ayudarte a añadir lo que necesitas.
Un Saludo
@karen Buenos días, entiendo. Te pido un último favor en relación a este tema:
Gracias y disculpa las molestias.
Hola Tomas.
Acabo de realizar un pedido con la cuenta de correo que indicaste y veo que funciona bien:
Cual es el problema ?
Dices que con el código que te indiqué antes los pedidos no se asignaban al usuario ¿ Comprobaste el estado de los pedidos ? si no esta como completado al cliente no le aparecerá en su cuenta.
Si quieres ponerte en contacto con algún colabora puedes contactar con Caltener:
-> https://www.webempresa.com/colaboradores/caltener.html
Un saludo
Buenos días Pepe, ante todo muchas gracias por vuestra obstinada colaboración. Lo has hecho de forma correcta porque por la noche dejo que todo funcione por defecto, pero por las mañanas a primera hora vuelvo a parchear el problema.
Inténtalo ahora y verás que cuando te pida acceder porque detecta la cuenta registrada, al darle al enlace por favor accede no se abrirá el formulario de inicio de sesión como un iframe, que es el comportamiento nativo de WC.