Invia il link per reimpostare la password all'utente tramite un modulo personalizzato di password dimenticata
Ho avuto difficoltà cercando tra vari tutorial senza successo. Ho una pagina di login personalizzata e sto semplicemente sostituendo il modulo di login con il modulo per la password dimenticata al click. Il mio problema è come far sì che il modulo invii all'utente un link per reimpostare la password se viene inserito il nome utente o l'email corretta e restituisca un errore in caso contrario. Sto cercando di farlo da un plugin che sto creando per gestire il login. Ecco il mio semplice modulo. Come posso farlo funzionare?
<form id="wp_pass_reset" action="" method="post">
<input type="text" id="email-field" name="user_input" value="Nome utente o Email" /><br />
<input type="submit" id="submitbtn" name="submit" value="Reimposta" />
</form>

Nel tuo plugin dovresti prima impostare l'URL di reindirizzamento a vuoto: $redirect='';
oppure all'URL completo della pagina in cui vuoi che l'utente atterri dopo aver cambiato con successo la password. Per http://example.com/mypage/ dovresti usare: $redirect=site_url( '/mypage/ ' );
Poi il tuo form sarebbe:
<form name="lostpasswordform" id="lostpasswordform" action="<?php echo wp_lostpassword_url(); ?>" method="post">
<p>
<label>Username o E-mail:<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="Ottieni Nuova Password" tabindex="100"></p>
</form>
Nota: Questo codice non è stato testato. Fammi sapere nei commenti se qualcosa non funziona.
Aggiornamento
Come notato nei commenti, se hai un filtro su login_url wp_lostpassword_url()
punterà alla tua pagina personalizzata. Per ripristinare temporaneamente il login_url predefinito, rimuovi il filtro subito prima del codice del form:
remove_filter( 'login_url', 'your_filter_function' );
e aggiungilo nuovamente subito dopo il codice del form:
add_filter( 'login_url', 'your_filter_function' );

Questo invia un link con una chiave unica all'email inserita se è un indirizzo email valido di un utente? Sto cercando di replicare il metodo predefinito che WordPress usa, solo che il link che viene inviato punta al mio template per il reset della password e non a quello di WordPress.

Hai filtrato il login_url per farlo puntare al tuo template di reset? Se sì, dovrai catturare il valore originale del login_url nel tuo filtro così da poterlo usare invece della chiamata a wp_lostpassword_url()
