Redirección en WordPress después de restablecer la contraseña

24 ene 2013, 16:46:48
Vistas: 31.5K
Votos: 11

Me gustaría poder redirigir a get_bloginfo('url'); después de restablecer la contraseña.

Pero por más que busco, no puedo encontrar una respuesta simple o función para hacer esto.

¿Alguien sabe si esto es posible?

Gracias Josh

0
Todas las respuestas a la pregunta 5
2
12

La respuesta "correcta" no funciona aquí porque la acción 'password_reset' se dispara antes de que se restablezca la contraseña.

Modifiqué la primera respuesta, antes de la actualización, para que funcione.

function wpse_lost_password_redirect() {

    // Verificar si se ha enviado
    $confirm = ( isset($_GET['action'] ) && $_GET['action'] == resetpass );

    if( $confirm ) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

Edición: No tenía suficiente reputación para comentar, así que estoy publicando esto como una nueva respuesta.

4 nov 2014 17:50:55
Comentarios

Esto debería publicarse como una respuesta. Buen trabajo.

Christine Cooper Christine Cooper
4 nov 2014 17:52:44

Excelente solución - también funciona en MS.

Q Studio Q Studio
28 abr 2018 12:51:55
7
10

Aquí hay una solución simple. Estoy enganchando en login_headerurl. Tal vez haya un mejor hook para esto, pero funciona. Coloca esto en tu functions.php:

function wpse_lost_password_redirect() {

    // Verificar si se ha enviado el formulario
    $confirm = ( isset($_GET['checkemail'] ) ? $_GET['checkemail'] : '' );

    if( $confirm ) {
        wp_redirect( home_url() ); 
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

Lo que hace es ejecutarse en login_headerurl y verifica el parámetro GET "checkemail" que obtienes después de enviar un nombre de usuario o correo electrónico válido. Luego redirijo usando la asombrosa función wp_redirect hacia la home_url.

ACTUALIZACIÓN después del comentario

Si deseas redirigir al usuario después de enviar una nueva contraseña, solo necesitas usar el hook password_reset. Aquí hay un ejemplo:

function wpse_lost_password_redirect() {
    wp_redirect( home_url() ); 
    exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');
25 ene 2013 22:50:09
Comentarios

Hola Pontus, muchas gracias por tu respuesta, estoy seguro que esto será útil para otra ocasión. Pero en realidad estoy buscando la redirección después de que la nueva contraseña misma haya sido restablecida, no después del envío del correo/usuario. Mira esta captura de pantalla del formulario donde necesito que funcione la redirección... http://i.imgur.com/x2IUQ0c.jpg - Gracias

Joshc Joshc
26 ene 2013 17:39:50

Ahh ya veo, eso es en realidad más fácil que la función anterior. Mira mi respuesta actualizada.

Pontus Abrahamsson Pontus Abrahamsson
26 ene 2013 20:51:11

¡¡Oh tío, ambas soluciones son increíbles!! Gracias por compartirlas con nosotros, funcionó de maravilla. ¡Buen trabajo!

Joshc Joshc
27 ene 2013 14:32:33

Acabo de usar tu primera respuesta para otra cosa, te dije que sería útil. Gracias de nuevo.

Joshc Joshc
14 feb 2013 20:28:05

Ten en cuenta que usar la acción password_reset se ejecuta antes de que se realice el restablecimiento real de la contraseña. La documentación dice Se dispara antes de que se restablezca la contraseña del usuario.

Ejaz Ejaz
11 nov 2015 21:50:34

La segunda versión no funciona correctamente porque la contraseña en realidad no se cambiará. Debes eliminar el exit porque esta acción se ejecuta antes de que se restablezca la contraseña.

Jon Surrell Jon Surrell
11 jul 2016 09:50:39

después_del_restablecimiento_de_contraseña

Clayton Jones Clayton Jones
3 abr 2019 12:00:45
Mostrar los 2 comentarios restantes
0

No logro ver cómo funciona la respuesta "ACTUALIZACIÓN después del comentario".

La documentación para el hook 'password_reset' dice "Se activa antes de que se restablezca la contraseña del usuario".
Si redireccionas y luego sales, la contraseña no se cambiará.

Como tenía una necesidad similar, desarrollé mi propia solución al problema. Seguimos respondiendo al hook "password_reset", pero en lugar de realizar la redirección inmediatamente, agregamos un hook para el filtro "login_url". Y es en este filtro donde agregamos las redirecciones a la página de inicio después de que el usuario haya iniciado sesión.

 add_action( "password_reset", "rngs_password_reset", 10, 2 );

/**
 * Implementa "password_reset" para RNGS
 *
 * Después de realizar un restablecimiento de contraseña, queremos que el enlace de Iniciar sesión redirija al usuario a la URL de inicio.
 * Cuando vemos que se ejecuta esta acción, sabemos que debemos filtrar "login_url" para agregar la redirección a la página de inicio.
 * No filtramos "login_url" en ningún otro momento. 
 *
 * @param WP_User $user - el objeto de usuario
 * @param string $new_pass - la nueva contraseña
 *  
 */
function rngs_password_reset( $user, $new_pass ) {
  add_filter( "login_url", "rngs_login_url", 10, 2 );
}

/**
 *  Implementa el filtro "login_url" para RNGS
 *
 * Redirige al usuario a la página de inicio después de iniciar sesión
 *
 * @TODO - convertir esto en un campo de opción que controle a dónde va el usuario después de iniciar sesión
 * @TODO - ¿dependiente del rol?
 * 
 * @param string $login_url - la URL de inicio de sesión original que no se espera que incluya "redirect_to" o "reauth"
 * @param string $redirect - se espera que sea nulo/en blanco
 */
function rngs_login_url( $login_url, $redirect ) {
  $home_redirect = home_url();
  $login_url = add_query_arg('redirect_to', urlencode( $home_redirect ), $login_url);
  return( $login_url );
} 
7 ago 2014 09:59:19
1

Quizás me esté perdiendo algo en la pregunta, pero ¿hay algo malo con usar el filtro lostpassword_redirect?

add_filter( 'lostpassword_redirect', 'my_redirect_home' );

function my_redirect_home( $lostpassword_redirect ) {
    return home_url();
}

Más información aquí: https://codex.wordpress.org/Plugin_API/Filter_Reference/lostpassword_redirect

7 feb 2017 00:35:48
Comentarios

Lo que te falta aquí, lostpassword_redirect es el filtro para una URL donde el usuario irá después de hacer clic en el botón ¿Olvidaste tu contraseña?. Luego, el usuario realmente restablecerá su contraseña, y cuando se establezca la nueva contraseña, el OP necesita un filtro/acción hook (que probablemente sea after_password_reset)

dev_masta dev_masta
29 nov 2019 20:54:48
1
-1

Rediret to es una función de WordPress para la que no necesitas crear un plugin, solo añade &redirect_to= la URL y funcionará. Ejemplo:

echo '<a href="'home_url().'/wp-login.php?action=lostpassword&amp;redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Contraseña Olvidada">'Contraseña Olvidada'</a>';
15 ago 2015 18:06:21
Comentarios

Las respuestas deben ser más que un fragmento de código. Por favor, propón una edición y explica por qué esto funcionaría.

Gabriel Gabriel
15 ago 2015 18:27:06