Ich habe im Frontend ein Anmeldeformular mit wp_login_form()
erstellt. In meiner functions.php Datei habe ich eine Aktion hinzugefügt, um die Weiterleitung zu /wp-login.php zu verhindern, falls die Anmeldung mit fehlschlug
add_action ('wp_login_failed',….
Wie sich herausstellt, funktioniert die Aktion nur, wenn die Felder Benutzername und Kennwort ausgefüllt sind. Wenn eines davon leer bleibt, werde ich trotzdem zu wp-login.php umgeleitet.
Gibt es eine Möglichkeit zu prüfen, ob beide Felder ausgefüllt sind, um die Weiterleitung zu verhindern?
Vielen Dank
Julianisch
Fügen Sie diesen Filter hinzu, um zu ändern, wie leere Benutzernamen/Passwörter behandelt werden:
add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
function custom_authenticate_username_password( $user, $username, $password )
{
if ( is_a($user, 'WP_User') ) { return $user; }
if ( empty($username) || empty($password) )
{
$error = new WP_Error();
$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
return $error;
}
}
Und dann funktioniert Ihre ursprüngliche Weiterleitung auf wp_login_failed auch mit leerem Benutzernamen/Passwort.
Das Problem liegt bei der Funktion wp_authenticate()
(gefunden in der Datei pluggable.php
)
Sie haben 2 Möglichkeiten.
wp_authenticate()
überschreibt (dies löscht lediglich einige Zeichen in einer if -Anweisung).