Reindirizzamento WordPress dopo il reset della password

24 gen 2013, 16:46:48
Visualizzazioni: 31.5K
Voti: 11

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

0
Tutte le risposte alla domanda 5
2
12

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.

4 nov 2014 17:50:55
Commenti

Questo dovrebbe essere pubblicato come risposta. Bel lavoro.

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

Ottima soluzione - funziona anche su MS.

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

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');
25 gen 2013 22:50:09
Commenti

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

Joshc Joshc
26 gen 2013 17:39:50

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

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

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

Joshc Joshc
27 gen 2013 14:32:33

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

Joshc Joshc
14 feb 2013 20:28:05

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.

Ejaz Ejaz
11 nov 2015 21:50:34

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.

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

dopo_reimpostazione_password

Clayton Jones Clayton Jones
3 apr 2019 12:00:45
Mostra i restanti 2 commenti
0

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 );
} 
7 ago 2014 09:59:19
1

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

7 feb 2017 00:35:48
Commenti

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)

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

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&amp;redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Password dimenticata">'Password dimenticata'</a>';
15 ago 2015 18:06:21
Commenti

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

Gabriel Gabriel
15 ago 2015 18:27:06