Reindirizzamento WordPress dopo il reset della password
Vorrei poter reindirizzare a get_bloginfo('url');
dopo aver reimpostato la password.
Ma non riesco assolutamente a trovare una risposta semplice o una funzione per fare questo.
Qualcuno sa se questo è possibile?
Grazie Josh

La risposta "corretta" non funziona qui perché l'azione 'password_reset' viene attivata prima che la password venga reimpostata.
Ho modificato la prima risposta, prima dell'aggiornamento, per farla funzionare.
function wpse_lost_password_redirect() {
// Verifica se è stato inviato
$confirm = ( isset($_GET['action'] ) && $_GET['action'] == resetpass );
if( $confirm ) {
wp_redirect( home_url() );
exit;
}
}
add_action('login_headerurl', 'wpse_lost_password_redirect');
Modifica: Non avevo abbastanza reputazione per commentare, quindi sto pubblicando questa come nuova risposta.

Ecco una semplice soluzione. Mi collego all'hook login_headerurl
. Forse esiste un hook migliore per questo scopo, ma funziona. Inserisci questo nel tuo functions.php:
function wpse_lost_password_redirect() {
// Verifica se è stato inviato il modulo
$confirm = ( isset($_GET['checkemail'] ) ? $_GET['checkemail'] : '' );
if( $confirm ) {
wp_redirect( home_url() );
exit;
}
}
add_action('login_headerurl', 'wpse_lost_password_redirect');
Ciò che fa è eseguirsi su login_headerurl
e verificare il parametro GET "checkemail" che ricevi dopo aver inviato un nome utente o email valido. Poi reindirizzo utilizzando la fantastica funzione wp_redirect verso la home_url.
AGGIORNAMENTO dopo il commento
Se vuoi reindirizzare l'utente dopo aver inviato una nuova password, devi solo usare l'hook password_reset. Ecco un esempio:
function wpse_lost_password_redirect() {
wp_redirect( home_url() );
exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');

Ciao Pontus, grazie mille per la tua risposta, sono sicuro che tornerà utile un'altra volta. Ma in realtà sto cercando il re-indirizzamento dopo che la nuova password stessa è stata reimpostata, non dopo l'invio dell'email/utente. Guarda questo screenshot del modulo su cui ho bisogno che funzioni il reindirizzamento... http://i.imgur.com/x2IUQ0c.jpg - Grazie

Aaah capisco, questo in realtà è più semplice della funzione precedente. Vedi la mia risposta aggiornata.

Awgh amico, sono entrambi fantastici!! Grazie per averli condivisi con noi, ha funzionato alla perfezione! Ottimo lavoro.

Ho appena utilizzato la tua prima risposta per qualcos'altro, ti avevo detto che sarebbe tornata utile. Grazie ancora.

Attenzione che l'uso dell'azione password_reset
viene eseguito prima che il reset effettivo della password sia completato. La documentazione dice Fires before the user's password is reset.

La seconda versione non funziona correttamente perché la password non verrà effettivamente cambiata. Devi rimuovere l'exit
perché questa azione viene eseguita prima che la password venga reimpostata.

Non riesco a capire come funzioni la risposta "UPDATE after comment".
La documentazione per l'hook 'password_reset' dice "Attivato prima che la password dell'utente venga reimpostata.".
Se si effettua un redirect e poi si esce, la password non verrà modificata.
Poiché avevo una necessità simile, ho sviluppato la mia soluzione al problema. Rispondiamo ancora all'hook "password_reset" ma invece di eseguire immediatamente il redirect, aggiungiamo un hook per il filtro "login_url". Ed è in questo filtro che aggiungiamo i reindirizzamenti alla home page dopo che l'utente ha effettuato l'accesso.
add_action( "password_reset", "rngs_password_reset", 10, 2 );
/**
* Implementa "password_reset" per RNGS
*
* Dopo che è stato effettuato un reset della password, vogliamo che il link di accesso reindirizzi l'utente alla home url.
* Quando vediamo che questa azione viene eseguita, sappiamo che dovremmo filtrare "login_url" per aggiungere il reindirizzamento alla home page.
* Non filtriamo "login_url" in nessun altro momento.
*
* @param WP_User $user - l'oggetto utente
* @param string $new_pass - la nuova password
*
*/
function rngs_password_reset( $user, $new_pass ) {
add_filter( "login_url", "rngs_login_url", 10, 2 );
}
/**
* Implementa il filtro "login_url" per RNGS
*
* Reindirizza l'utente alla home page dopo l'accesso
*
* @TODO - rendilo un campo opzione che controlla dove va l'utente loggato
* @TODO - dipendente dal ruolo?
*
* @param string $login_url - l'URL di login originale che non dovrebbe includere "redirect_to" o "reauth"
* @param string $redirect - dovrebbe essere null/vuoto
*/
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 );
}

Forse mi sfugge qualcosa nella domanda, ma c'è qualcosa di sbagliato nell'usare il filtro lostpassword_redirect
?
add_filter( 'lostpassword_redirect', 'my_redirect_home' );
function my_redirect_home( $lostpassword_redirect ) {
return home_url();
}
Maggiori informazioni qui: https://codex.wordpress.org/Plugin_API/Filter_Reference/lostpassword_redirect

Quello che ti manca qui, lostpassword_redirect
è il filtro per un URL dove l'utente verrà reindirizzato dopo aver cliccato il pulsante Password dimenticata
. Poi effettivamente reimposterà la sua password, e quando la nuova password sarà impostata, l'OP ha bisogno di un filtro/hook di azione (che probabilmente è after_password_reset
)

Redirect_to è una funzionalità di WordPress per cui non è necessario creare un plugin, basta aggiungere &redirect_to= l'URL e funzionerà. Esempio:
echo '<a href="'home_url().'/wp-login.php?action=lostpassword&redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Password dimenticata">'Password dimenticata'</a>';

Le risposte dovrebbero essere più di un semplice frammento di codice. Per favore, proponi una modifica e spiega perché questa soluzione funzionerebbe.
