Trimiterea link-ului de resetare a parolei către utilizator din formular personalizat pentru parolă pierdută
M-am chinuit să caut prin multe tutoriale fără succes. Am o pagină de autentificare personalizată și doar înlocuiesc formularul de autentificare cu formularul pentru parola uitată la click. Problema mea este cum să fac formularul să trimită utilizatorului un link de resetare a parolei dacă numele de utilizator sau emailul corect este introdus și să returneze o eroare dacă nu. Încerc să fac acest lucru dintr-un plugin pe care îl creez pentru a gestiona autentificarea. Iată formularul meu simplu. Cum pot face acest lucru să funcționeze?
<form id="wp_pass_reset" action="" method="post">
<input type="text" id="email-field" name="user_input" value="Nume utilizator sau Email" /><br />
<input type="submit" id="submitbtn" name="submit" value="Resetează" />
</form>

În plugin-ul tău, mai întâi vei seta URL-ul de redirecționare fie la nimic: $redirect='';
fie la URL-ul complet al paginii pe care dorești ca utilizatorul să ajungă după ce și-a schimbat parola cu succes. Pentru http://example.com/mypage/ ai folosi: $redirect=site_url( '/mypage/ ' );
Apoi, formularul tău ar arăta astfel:
<form name="lostpasswordform" id="lostpasswordform" action="<?php echo wp_lostpassword_url(); ?>" method="post">
<p>
<label>Nume de utilizator sau 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="Obține parolă nouă" tabindex="100"></p>
</form>
Notă: Acest cod nu a fost testat. Spune-mi în comentarii ce se întâmplă dacă ceva nu funcționează.
Actualizare
După cum s-a menționat în comentarii, dacă ai un filtru pe login_url, wp_lostpassword_url()
va trimite la pagina ta personalizată. Pentru a restaura temporar login_url implicit, elimină filtrul chiar înainte de codul formularului:
remove_filter( 'login_url', 'your_filter_function' );
și adaugă-l înapoi imediat după codul formularului:
add_filter( 'login_url', 'your_filter_function' );

Acest lucru trimite un link cu o cheie unică la adresa de email introdusă dacă este o adresă validă a unui utilizator? Încerc să reproduc metoda implicită pe care WordPress o folosește, doar că link-ul pe care îl primesc este direcționat către șablonul meu de resetare a parolei și nu către cel al WordPress.

Ai filtrat login_url să pointeze către șablonul tău de resetare? Dacă da, va trebui să capturezi valoarea originală a login_url în filtrul tău, ca să o poți folosi în loc de apelul către wp_lostpassword_url().
