Prevenirea redirecționării wp_login_form() către wp-admin când apar erori
Am creat un formular de autentificare în frontend-ul site-ului meu folosind wp_login_form(). Totuși, când utilizatorul introduce un nume de utilizator/parolă incorectă, este redirecționat către formularul de autentificare din wp-admin.
Cum pot să afișez mesajele de eroare deasupra formularului de autentificare? În mod ideal, nu vreau ca utilizatorul să vadă vreodată secțiunea de administrare WordPress.
Am încercat să folosesc hook-ul redirect_invalid_login() dar pare că nu funcționează?
adaugă următorul cod în fișierul tău functions.php. Acesta va redirecționa utilizatorul înapoi de unde a fost trimis formularul de autentificare.
add_action( 'wp_login_failed', 'my_front_end_login_fail' ); // hook pentru autentificare eșuată
function my_front_end_login_fail( $username ) {
$referrer = $_SERVER['HTTP_REFERER']; // de unde a venit trimiterea formularului?
// dacă există un referrer valid și nu este pagina implicită de logare
if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
wp_redirect( $referrer . '?login=failed' ); // adăugăm un parametru (login=failed) în URL pentru temă
exit;
}
}
cum putem obține erori precum parolă invalidă sau nume de utilizator invalid etc...???
vrajesh
Cea mai bună practică este să nu afișezi o eroare specifică, ci ceva de genul "date de autentificare invalide". Afișarea mesajului "parolă invalidă" înseamnă că utilizatorul există pe acest site, deci asta este un lucru mai puțin de ghicit (și, prin sine, faptul de a ști că un email este înregistrat pe un anumit site poate fi o problemă de confidențialitate). Dacă afișezi "parolă invalidă", înseamnă că un utilizator de pe acest site folosește acea parolă, ceea ce nu este ideal. Pentru a obține informația că a existat o eroare, poți verifica dacă $_GET['login'] == 'failed'.
idFlood
știi că rezolvă problema, dar tot se strică când nu introduci nicio informație.
Nu-mi place să folosesc functions.php.
Aș vrea să fie ca index.php, dar lucruri de genul ăsta nu au fost posibile din anumite motive. Trebuie să existe o soluție mai bună.
Formularul de login "Essentials Addons" pentru Elementor pare să rezolve toate problemele dacă folosești Elementor. Este singurul lucru pe care l-am găsit care chiar face treaba. Noroc că este gratuit.