Aktion wp_login_failed funktioniert nicht, wenn nur ein Feld ausgefüllt ist

Ich habe ein Login-Formular im Frontend mit wp_login_form() . In meiner functions.php Datei habe ich eine Aktion hinzugefügt, um die Weiterleitung an /wp-login.php zu verhindern, falls die Anmeldung fehlgeschlagen ist

add_action (‘wp_login_failed’, ….

Wie sich herausstellt, hakt die Aktion nur, wenn die Felder Benutzername und Passwort ausgefüllt sind. Wenn eine davon leer gelassen wird, werde ich immer noch zu wp-login.php weitergeleitet.

Gibt es eine Möglichkeit zu überprüfen, ob beide Felder ausgefüllt sind, um die Weiterleitung zu verhindern?

Vielen Dank

julianisch

Solutions Collecting From Web of "Aktion wp_login_failed funktioniert nicht, wenn nur ein Feld ausgefüllt ist"

Fügen Sie diesen Filter hinzu, um zu ändern, wie leere Benutzername / Passwort behandelt wird:

 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', __('ERROR: Invalid username or incorrect password.')); return $error; } } 

Und dann funktioniert deine ursprüngliche Weiterleitung auf wp_login_failed auch mit leerem Benutzernamen / Passwort.

Das Problem liegt bei der function wp_authenticate() (gefunden in der Datei pluggable.php )

Sie haben 3 Möglichkeiten.

  • hacken Sie den WordPress-core (nicht empfohlen!)
  • Schreibe dein eigenes Plugin, das wp_authenticate() überschreibt (dies löscht nur ein paar Zeichen in einer if- statement).
  • benutze das Plugin (nicht wirklich den Namen wert Plugin) Ich schrieb. wp-Login-Fehler