Redirecționare WordPress după resetarea parolei
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

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.

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');

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

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

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

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

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ă.

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ă.

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 );
}

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

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
)

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&redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Ai uitat parola">'Ai uitat parola'</a>';

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.
