Redirecționare WordPress după resetarea parolei

24 ian. 2013, 16:46:48
Vizualizări: 31.5K
Voturi: 11

Aș dori să pot face o redirecționare către get_bloginfo('url'); după resetarea parolei.

Dar nu pot găsi deloc un răspuns simplu sau o funcție pentru a face acest lucru.

Știe cineva dacă acest lucru este posibil?

Mulțumesc Josh

0
Toate răspunsurile la întrebare 5
2
12

Răspunsul "corect" nu funcționează aici pentru că acțiunea 'password_reset' se declanșează înainte ca parola să fie resetată.

Am modificat primul răspuns, înainte de actualizare, pentru a funcționa.

function wpse_lost_password_redirect() {

    // Verifică dacă s-a trimis formularul
    $confirm = ( isset($_GET['action'] ) && $_GET['action'] == resetpass );

    if( $confirm ) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

Editare: Nu aveam suficiente puncte de reputație pentru a comenta, așa că am postat acest lucru ca un răspuns nou.

4 nov. 2014 17:50:55
Comentarii

Aceasta ar trebui postată ca răspuns. Bună treabă.

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

Soluție excelentă - funcționează și pe MS.

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

Iată o soluție simplă. Mă conectez la login_headerurl. Poate există un hook mai potrivit pentru asta, dar funcționează. Puneți acest cod în functions.php:

function wpse_lost_password_redirect() {

    // Verifică dacă s-a trimis formularul
    $confirm = ( isset($_GET['checkemail'] ) ? $_GET['checkemail'] : '' );

    if( $confirm ) {
        wp_redirect( home_url() ); 
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

Ce face acest cod: rulează pe login_headerurl și verifică parametrul GET "checkemail" care apare după ce ai trimis un nume de utilizator sau email valid. Apoi redirecționez folosind funcția minunată wp_redirect către home_url.

ACTUALIZARE după comentariu

Dacă doriți să redirecționați utilizatorul după ce a introdus o nouă parolă, trebuie doar să folosiți hook-ul password_reset. Iată un exemplu:

function wpse_lost_password_redirect() {
    wp_redirect( home_url() ); 
    exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');
25 ian. 2013 22:50:09
Comentarii

Salut Pontus, îți mulțumesc foarte mult pentru răspuns, sigur o să-mi fie util pentru altă dată. Dar de fapt eu caut redirecționarea după ce parola nouă a fost resetată, nu după trimiterea emailului/utilizatorului. Vezi în această captură de ecran formularul pentru care am nevoie să funcționeze redirecționarea... http://i.imgur.com/x2IUQ0c.jpg - Mulțumesc

Joshc Joshc
26 ian. 2013 17:39:50

Aaa, am înțeles, asta e de fapt mai ușor decât funcția anterioară. Vezi răspunsul meu actualizat.

Pontus Abrahamsson Pontus Abrahamsson
26 ian. 2013 20:51:11

Wow omule, ambele soluții sunt minunate!! Mulțumesc că le-ai împărtășit cu noi, a funcționat perfect! Super lucru.

Joshc Joshc
27 ian. 2013 14:32:33

Tocmai am folosit primul tău răspuns pentru altceva, ți-am spus că va fi util. Mulțumesc din nou.

Joshc Joshc
14 feb. 2013 20:28:05

Atenție că utilizarea acțiunii password_reset se execută înainte ca resetarea efectivă a parolei să fie finalizată. Documentația spune Se declanșează înainte ca parola utilizatorului să fie resetată.

Ejaz Ejaz
11 nov. 2015 21:50:34

A doua versiune nu funcționează corect deoarece parola nu va fi de fapt schimbată. Trebuie să eliminați exit deoarece această acțiune este executată înainte ca parola să fie resetată.

Jon Surrell Jon Surrell
11 iul. 2016 09:50:39

după_resetarea_parolei

Clayton Jones Clayton Jones
3 apr. 2019 12:00:45
Arată celelalte 2 comentarii
0

Nu înțeleg cum funcționează răspunsul "UPDATE after comment".

Documentația pentru hook-ul 'password_reset' spune "Se declanșează înainte ca parola utilizatorului să fie resetată.".
Dacă faci o redirecționare și apoi ieși, parola nu va fi schimbată.

Deoarece am avut o nevoie similară, am dezvoltat propria soluție pentru problemă. Încă răspundem la hook-ul "password_reset", dar în loc să facem redirecționarea imediat, adăugăm un hook pentru filtrul "login_url". Și în acest filtru adăugăm redirecționările către pagina de start după ce utilizatorul s-a autentificat.

 add_action( "password_reset", "rngs_password_reset", 10, 2 );

/**
 * Implementează "password_reset" pentru RNGS
 *
 * După ce a fost efectuat un reset al parolei, dorim ca link-ul de Autentificare să redirecționeze utilizatorul către URL-ul de start.
 * Când vedem acțiunea rulându-se, știm că ar trebui să filtrăm "login_url" pentru a adăuga redirecționarea către pagina de start.
 * Nu filtrăm "login_url" în alte momente. 
 *
 * @param WP_User $user - obiectul utilizator
 * @param string $new_pass - noua parolă
 *  
 */
function rngs_password_reset( $user, $new_pass ) {
  add_filter( "login_url", "rngs_login_url", 10, 2 );
}

/**
 *  Implementează filtrul "login_url" pentru RNGS
 *
 * Redirecționează utilizatorul către pagina de start după autentificare
 *
 * @TODO - transformă asta într-un câmp de opțiuni care controlează unde merge utilizatorul autentificat
 * @TODO - în funcție de rol?
 * 
 * @param string $login_url - URL-ul original de autentificare care nu ar trebui să includă "redirect_to" sau "reauth"
 * @param string $redirect - se așteaptă să fie null/gol
 */
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 aug. 2014 09:59:19
1

Poate omit ceva în întrebare, dar este ceva greșit în utilizarea filtrului lostpassword_redirect?

add_filter( 'lostpassword_redirect', 'my_redirect_home' );

function my_redirect_home( $lostpassword_redirect ) {
    return home_url();
}

Mai multe detalii aici: https://codex.wordpress.org/Plugin_API/Filter_Reference/lostpassword_redirect

7 feb. 2017 00:35:48
Comentarii

Ceea ce îți lipsește aici, lostpassword_redirect este filtrul pentru URL-ul unde utilizatorul va ajunge după ce apasă butonul Ai uitat parola. Apoi el va reseta efectiv parola, iar când noua parolă este setată, OP are nevoie de un filtru/hook de acțiune (care probabil este after_password_reset)

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

Rediret to este o funcționalitate WordPress pentru care nu este nevoie să creezi un plugin, doar adaugă &redirect_to= URL-ul și va funcționa. Exemplu:

echo '<a href="'home_url().'/wp-login.php?action=lostpassword&amp;redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Ai uitat parola">'Ai uitat parola'</a>';
15 aug. 2015 18:06:21
Comentarii

Răspunsurile ar trebui să fie mai mult decât un fragment de cod. Te rugăm să faci o editare și să explici de ce această soluție ar funcționa.

Gabriel Gabriel
15 aug. 2015 18:27:06