In letzter Zeit häufen sich bei mir die Versuche gelangweilter Nerds, sich über die Funktion „Passwort vergessen?“ auf der Anmeldeseite in WordPress einen Zugang zum jeweiligen System zu verschaffen. Ziemlich unsinnig – dafür umso nerviger für die Accountinhaber, da zu jedem Versuch natürlich auch eine entsprechende Mail von WordPress verschickt wird.
Um diesem Treiben einen Riegel vorzuschieben und bestenfalls ein dauerhaftes Ende zu setzen, muss ein wenig in die Trickkiste gegriffen werden. Die effektivste Lösung scheint mir in diesem Fall, die „Passwort vergessen?“-Funktionalität in WordPress einfach auszuknipsen.
Hierzu sind mehrere kleine Codeschnipsel nötig, die in der Datei „functions.php“ des Child-Themes eingefügt werden.
Warum ein Child-Theme verwendet werden sollte und wie dieses erstellt wird, ist auf dieser Seite sehr gut beschrieben.
Doch nun wieder zu den vorzunehmenden Anpassungen:
- Zunächst wird der Link „Passwort vergessen?“ auf der Anmeldeseite versteckt:
// Passwort vergessen Link entfernen function maremed_remove_lostpassword_text ( $text ) { if ($text == 'Passwort vergessen?'){$text = '';} return $text; } add_filter( 'gettext', 'maremed_remove_lostpassword_text' );
- Im nächsten Schritt wird die URL der „Passwort zurücksetzen“-Funktion deaktiviert und bei manuellem Aufruf der URL erfolgt eine Umleitung auf die Anmeldeseite:
// Passwort zuruecksetzen URL deaktivieren & Redirect zum Login function maremed_disable_lost_password() { if (isset( $_GET['action'] )){ if ( in_array( $_GET['action'], array('lostpassword', 'retrievepassword') ) ) { wp_redirect( wp_login_url(), 301 ); exit; } } } add_action( "login_init", "maremed_disable_lost_password" );
- Zuletzt wird nun noch die Standard-Fehlermeldung, die beim Login mit falschen Anmeldedaten ausgegeben wird, geändert:
// WordPress Fehlermeldungen aendern function maremed_change_wordpress_errors() { return "Der Benutzername oder das Passwort ist falsch. Bitten Sie den Systemadministrator un Hilfe."; } add_filter( 'login_errors', 'maremed_change_wordpress_errors' );
Eine Alternative zum letzten Schritt wäre noch, die Fehlermeldung ganz auszublenden.
Hierzu reicht ein kleiner Eintrag in der „style.css“ – natürlich ebenfalls idealerweise in der des Child-Themes:
#login_error {display: none;}
Nach diesen Änderungen sollte dann endgültig Schluss sein mit den nervigen Versuchen, sich über die Funktion „Passwort vergessen?“ Zugang zum Backend verschaffen zu wollen …