Redirección en WordPress después de restablecer la contraseña
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

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.

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');

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

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

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

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

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.

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.

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 );
}

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

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
)

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&redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Contraseña Olvidada">'Contraseña Olvidada'</a>';

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.
