Enviar enlace de restablecimiento de contraseña a usuario desde formulario personalizado

5 sept 2012, 00:02:39
Vistas: 24.8K
Votos: 2

He estado luchando buscando entre varios tutoriales sin éxito. Tengo una página de inicio de sesión personalizada y solo estoy reemplazando el formulario de inicio de sesión con el formulario de contraseña olvidada al hacer clic. Mi problema es cómo hacer que el formulario envíe al usuario un enlace de restablecimiento de contraseña si se ingresa el nombre de usuario o correo electrónico correcto y devuelva un error si no. Estoy tratando de hacer esto desde un plugin que estoy creando para manejar el inicio de sesión. Aquí está mi formulario simple. ¿Cómo puedo hacer que esto funcione?

  <form id="wp_pass_reset" action="" method="post">
    <input type="text" id="email-field" name="user_input" value="Nombre de usuario o Email" /><br />
    <input type="submit" id="submitbtn" name="submit" value="Restablecer" />
  </form>
7
Comentarios

¿Entonces cualquiera podría restablecer la contraseña de otro?

Stephen Harris Stephen Harris
5 sept 2012 02:49:10

lol doh, voy a editar esto

Pollux Khafra Pollux Khafra
5 sept 2012 03:04:53

Este es el artículo correcto para ti. - http://www.kvcodes.com/2016/10/wordpress-custom-forgot-password-page/

Kvvaradha Kvvaradha
3 nov 2016 06:32:01

Estoy usando el tema Olympus en WordPress. La URL de contraseña perdida redirige a la URL de la página de inicio. Aquí está el código que se usa para la sección de restablecimiento de contraseña: php <?php $lostpswd = apply_filters( 'yz_lostpassword_url', wp_lostpassword_url() ); ?> <a href="<?php echo esc_url( $lostpswd ); ?>" class="forgot"> <?php esc_html_e( 'Olvidé mi contraseña', 'crum-ext-sign-form' ); ?> </a> ¿Qué debo hacer?

zahra zahra
27 oct 2020 14:46:23

Primero necesitas determinar si wp_lostpassword_url() está devolviendo la URL incorrecta, o si es el filtro yz_lostpassword_url el que está devolviendo la URL incorrecta. Por ejemplo, simplemente configura $lostpswd = wp_lostpassword_url(); y observa qué ocurre.

Rup Rup
27 oct 2020 15:13:22

Sin embargo, has publicado esto como una respuesta a una pregunta existente cuando en realidad es una nueva pregunta. Si necesitas más ayuda, ¿puedes hacer esta pregunta como una nueva pregunta? Por favor, enlaza de vuelta a esta pregunta si es útil para el contexto. ¡Gracias!

Rup Rup
27 oct 2020 15:14:22

@zahra debes hacer nuevas preguntas como preguntas nuevas, no las publiques como soluciones a otras preguntas

Tom J Nowell Tom J Nowell
27 oct 2020 16:04:32
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 1
3

En tu plugin, primero establecerías la URL de redirección como vacía: $redirect=''; o la URL completa de la página a la que quieres que el usuario llegue después de cambiar su contraseña correctamente. Para http://example.com/mipagina/ usarías: $redirect=site_url( '/mipagina/ ' );

Entonces tu formulario sería:

<form name="lostpasswordform" id="lostpasswordform" action="<?php echo wp_lostpassword_url(); ?>" method="post">
    <p>
        <label>Nombre de usuario o Correo electrónico:<br>
        <input type="text" name="user_login" id="user_login" class="input" value="" size="20" tabindex="10"></label>
    </p>
    <input type="hidden" name="redirect_to" value="<?php echo $redirect ?>">
    <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Obtener nueva contraseña" tabindex="100"></p>
</form>

Nota: Este código no ha sido probado. Déjame saber en los comentarios si algo no funciona.

Actualización

Como se menciona en los comentarios, si tienes un filtro en login_url wp_lostpassword_url() apuntará a tu página personalizada. Para restaurar temporalmente el login_url por defecto, elimina el filtro justo antes del código del formulario:

remove_filter( 'login_url', 'tu_funcion_de_filtro' );

y vuelve a agregarlo justo después del código del formulario:

add_filter( 'login_url', 'tu_funcion_de_filtro' );
7 sept 2012 00:58:27
Comentarios

¿Esto envía un enlace con una clave única al correo electrónico ingresado si es una dirección de correo válida de un usuario? Estoy intentando replicar el método predeterminado que usa WordPress, solo que el enlace que se envía apunta a mi plantilla de restablecimiento de contraseña y no a la de WordPress.

Pollux Khafra Pollux Khafra
7 sept 2012 01:12:46

¿Has filtrado el login_url para que apunte a tu plantilla de restablecimiento? Si es así, tendrás que capturar el valor original de login_url en tu filtro para que puedas usarlo en lugar de la llamada a wp_lostpassword_url()

marfarma marfarma
7 sept 2012 01:16:29

O alternativamente, elimina tu filtro antes del código del formulario y restáuralo después. Probablemente sea más fácil de esa manera.

marfarma marfarma
7 sept 2012 01:18:29