Trimiterea link-ului de resetare a parolei către utilizator din formular personalizat pentru parolă pierdută

5 sept. 2012, 00:02:39
Vizualizări: 24.8K
Voturi: 2

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>
7
Comentarii

Deci oricine poate reseta parola altcuiva?

Stephen Harris Stephen Harris
5 sept. 2012 02:49:10

lol doh O să modific asta

Pollux Khafra Pollux Khafra
5 sept. 2012 03:04:53

Acesta este articolul potrivit pentru tine. - http://www.kvcodes.com/2016/10/wordpress-custom-forgot-password-page/

Kvvaradha Kvvaradha
3 nov. 2016 06:32:01

Folosesc tema Olympus pe WordPress. URL-ul pentru parolă pierdută redirecționează către URL-ul paginii de start. Iată codul folosit pentru secțiunea de resetare a parolei: php <?php $lostpswd = apply_filters( 'yz_lostpassword_url', wp_lostpassword_url() ); ?> <a href="<?php echo esc_url( $lostpswd ); ?>" class="forgot"> <?php esc_html_e( 'Forgot my Password', 'crum-ext-sign-form' ); ?> </a> Ce ar trebui să fac?

zahra zahra
27 oct. 2020 14:46:23

Mai întâi trebuie să verifici dacă wp_lostpassword_url() returnează URL-ul greșit, sau dacă filtrul yz_lostpassword_url returnează URL-ul greșit. De exemplu, setează $lostpswd = wp_lostpassword_url(); și vezi ce se întâmplă?

Rup Rup
27 oct. 2020 15:13:22

Totuși, ai postat acest lucru ca răspuns la o întrebare existentă, când de fapt este o întrebare nouă. Dacă ai nevoie de mai mult ajutor, poți să o postezi ca întrebare nouă? Te rog să incluzi un link către această întrebare dacă este util pentru context. Mulțumesc!

Rup Rup
27 oct. 2020 15:14:22

@zahra ar trebui să pui întrebări noi ca întrebări separate, nu le posta ca soluții la alte întrebări

Tom J Nowell Tom J Nowell
27 oct. 2020 16:04:32
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 1
3

Î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' );
7 sept. 2012 00:58:27
Comentarii

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.

Pollux Khafra Pollux Khafra
7 sept. 2012 01:12:46

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().

marfarma marfarma
7 sept. 2012 01:16:29

Sau, alternativ, poți elimina filtrul înainte de codul formularului și să îl restaurezi după aceea. Probabil că e mai ușor așa.

marfarma marfarma
7 sept. 2012 01:18:29