Prevenirea redirecționării wp_login_form() către wp-admin când apar erori

9 aug. 2012, 02:51:09
Vizualizări: 21.6K
Voturi: 9

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

2
Comentarii
Toate răspunsurile la întrebare 2
3
17

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;
   }
}
5 feb. 2013 07:48:08
Comentarii

cum putem obține erori precum parolă invalidă sau nume de utilizator invalid etc...???

vrajesh vrajesh
26 iun. 2015 09:29:16

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 idFlood
30 nov. 2018 18:05:33

Nu sunt un fan al function.php/theme.php, dar acest lucru a funcționat. Poate vreau să adaug un fragment de php în fișierul meu de antet din template-ul elementor, dar nimeni nu face asta.

powdered_bread powdered_bread
14 sept. 2023 03:09:40
0
-1

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

14 sept. 2023 22:20:58