Impedire a wp_login_form() di reindirizzare a wp-admin quando ci sono errori
Ho creato un modulo di login nel frontend del mio sito utilizzando wp_login_form(). Tuttavia, quando l'utente inserisce un nome utente/password errati, viene reindirizzato al modulo di login di wp-admin.
Come si possono invece visualizzare i messaggi di errore sopra il modulo di login? Idealmente, non vorrei che l'utente debba mai vedere la sezione amministrativa di WordPress.
Ho provato a utilizzare l'hook redirect_invalid_login() ma non sembra funzionare?
aggiungi semplicemente il seguente codice al tuo file function.php. reindirizzerà l'utente alla pagina da cui è stato inviato il modulo di login.
add_action( 'wp_login_failed', 'my_front_end_login_fail' ); // hook per il login fallito
function my_front_end_login_fail( $username ) {
$referrer = $_SERVER['HTTP_REFERER']; // da dove proviene l'invio del form?
// se c'è un referrer valido e non è la schermata di login predefinita
if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
wp_redirect( $referrer . '?login=failed' ); // aggiungiamo un parametro (login=failed) all'URL per il tema
exit;
}
}
come possiamo ottenere errori come password non valida o username non valido ecc...???
vrajesh
La best practice è non mostrare errori specifici ma invece qualcosa come "credenziali non valide". Mostrare "password non valida" significa che l'utente esiste su questo sito, quindi è una cosa in meno da indovinare (e di per sé sapere che un'email è registrata su un sito web può essere un problema di privacy). Se mostri "password non valida" allora significa che qualche utente su questo sito usa questa password, il che non è ideale. E per ottenere l'informazione che c'è stato un errore puoi controllare se $_GET['login'] == 'failed'.
idFlood
sai che lo sistema ma si incasina ancora quando non inserisci alcuna informazione.
Non mi piace affatto usare functions.php.
Mi piacerebbe usare index.php ma cose del genere non sono state possibili per qualche motivo. Ci vorrebbe una soluzione migliore.
Il modulo di login "Essentials Addons" per Elementor sembra risolvere tutti i problemi se stai usando Elementor. È l'unica cosa che ho trovato che fa davvero il lavoro. Per fortuna è gratuito.