Saltar navegación

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Etiquetado: 

Este tema contiene 6 respuestas, tiene 2 voces.

Última actualización por Carlos Rojas hace 1 año, 11 meses.

Asistido por: Carlos Rojas.

Autor Publicaciones
julio 18, 2023 a las 4:18 am #14054203

be-dental-expert-trainingS

Saludos cordiales.

Nuestro sitio web está creado en español (default) y en inglés. Cuando un usuario solicita restablecer su contraseña y el enlace que recibe en su email ha caducado, al hacer clic en ese enlace el usuario siempre es redirigido a la página en español /wp-login.php?action=lostpassword&error=expiredkey (ver imagen adjunta), aunque haya usado el sitio en inglés para crear su solicitud.

Si el usuario utiliza el sitio en inglés, al hacer clic en el enlace después que este ha caducado, debería ser redirigido a la página en inglés /en/wp-login.php?action=lostpassword&error=expiredkey (ver imagen adjunta).

Necesito ayuda para corregir este problema

Saludos
Luis De Sousa

Captura de pantalla 2023-07-17 235858.jpg
Captura de pantalla 2023-07-17 235459.jpg
julio 18, 2023 a las 10:49 am #14058363

Carlos Rojas
Partidario de WPML desde 03/2017

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola Luis,
Muchas gracias por contactarnos

Le pido que siga los pasos descritos en este enlace: https://wpml.org/forums/topic/multi-language-password-reset-link/#post-6391953

Hágame saber si necesita más asistencia de nuestra parte

Saludos,
Carlos

julio 18, 2023 a las 11:35 am #14058729

be-dental-expert-trainingS

Hola Carlos. Gracias por encargarte de mi problema

El enlace que publicaste me lleva a un post donde a su vez Bruno Kos le ofrece a otro usuario dos enlaces con las soluciones a su problema:

https://wpml.org/forums/topic/translating-wp-login-page/#post-3094519
https://wpml.org/forums/topic/translate-the-login-page/#post-1318837

Ninguno de esos 2 enlaces los puedo abrir. Incluso el segundo arroja un error 404 (ver imágenes anexas)

Saludos
Luis De Sousa

Captura de pantalla (76).png
Captura de pantalla (75).png
julio 18, 2023 a las 1:27 pm #14059613

Carlos Rojas
Partidario de WPML desde 03/2017

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola Luis,
Tiene usted razón y le pido disculpas.

Me gustaría solicitar acceso temporal al sitio (wp-admin y FTP) con el objetivo de ver el problema más de cerca. Su próxima respuesta será privada y en ella encontrará los campos correspondientes a las credenciales solicitadas.

Aunque no realizaré ningún cambio en el sitio siempre es recomendable crear una copia de seguridad del sitio completo antes de compartir las credenciales de acceso.

Saludos!

julio 18, 2023 a las 2:04 pm #14059907

be-dental-expert-trainingS

Hola Carlos

Gracias por la pronta respuesta. Debido a las estrictas políticas de seguridad y privacidad del sitio web, debo prepararte un sitio staging con acceso de admin y FTP para que realicen sus revisiones. Necesito que me des una horas.

Saludos

julio 19, 2023 a las 1:27 am #14062397

be-dental-expert-trainingS

Hola Carlos

Disculpa, he estado bastante ocupado y no he tenido tiempo para preparar el sitio staging. Sin embargo, te comento que he hecho una revisión rápida del archivo wp-login.php del core de wordpress (donde se produce el redireccionamiento que está causando el problema) y he encontrado que el siguiente fragmento de código es el responsable del redireccionamiento errado que reporté:

if ( ! $user || is_wp_error( $user ) ) {
	setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );

if ( $user && $user->get_error_code() === 'expired_key' ) {
	wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) );
} else {
	wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) );
}

exit;
}

Observa que el núcleo de WP utiliza la función site_url() para construir la url del redireccionamiento. Esta función siempre devuelve la url predeterminada del sitio (root) y por ello el redireccionamiento siempre ocurre hacia idioma predeterminado del sitio.

Para resolver este problema se debe suprimir la función site_url() y en este caso en lugar de wp_redirect() es preferible usar wp_safe_redirect() para validar que la url creada pertenezca al propio sitio. De esta forma el fragmento de código quedaría como sigue:

if ( ! $user || is_wp_error( $user ) ) {
	setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );

if ( $user && $user->get_error_code() === 'expired_key' ) {
	wp_safe_redirect( 'wp-login.php?action=lostpassword&error=expiredkey' );
} else {
	wp_safe_redirect( 'wp-login.php?action=lostpassword&error=invalidkey' );
}

exit;
}

Por ahora he resuelto el problema temporalmente sobre-escribiendo el archivo wp-login.php (no recomendado), mientras investigo la forma de hacerlo usando los ganchos disponibles en ese archivo.

Saludos
Luis De Sousa

julio 19, 2023 a las 11:11 am #14065607

Carlos Rojas
Partidario de WPML desde 03/2017

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola Luis,

Me alegra saber que ha encontrado una solución (temporal) a este problema y la ha compartido para que otros usuarios puedan verla.

Por favor no dude en contactarnos si necesita de nuestra asistencia en el futuro con WPML. Estaremos más que contentos de poder ayudarle.
Saludos!