Hallo zusammen,
um meinen Wordpress Backend Login-Bereich abzusichern, habe ich ein kleines Snippet in die 'functions.php' des Child-Themes eingefügt.
Bei falscher Eingabe von User Name oder Passwort soll eine Weiterleitung an eine externe URL erfolgen.
Leider passiert das nicht. Es erscheint lediglich eine fast leere Seite (auf meiner Domain) mit dem WP-Logo mittig zentriert.
Hier der Code, in der Hoffnug ihr könnt mir einen Tipp geben, warum es scheintert.
[COLOR=#ff8000]if ( ! function_exists( 'ah_redirect_after_login_errors' ) ) :[/COLOR]
[COLOR=#59b300]/**
* Redirect auf Google nach falscher Eingabe der WP-Zugangsdaten
*/[/COLOR]
[COLOR=#ff8000]function ah_redirect_after_login_errors() {
wp_redirect( 'https://www.google.de' );
exit;
}
add_filter( 'login_errors', 'ah_redirect_after_login_errors' );
endif;[/COLOR]
Muss vlt. noch an anderer Stelle etwas eingestellt werden? Kann meine Funktion für die Weiterleitung nicht über den Hook eingefügt werden? Ich bin leider kein Informatiker, starte gerade mit Wordpress und möchte meinen Blog vor Erstellung so sicher wie möglich machen. Die hier aufgezeigte Maßnahme ist also nur eine von vielen anderen Anpassungen, die ich bereits in der htaccess, der wp-config und auch in der functions.php eingestellt habe.
Kann es sein, dass das Setzen des Hooks für den wp_redirect blockiert wird, weil dieser Code z.B. mit einem anderen Snippet in der functions.php kolidiert?
Ich habe z.B. auch noch eine Einstellung vorgenommen, sodass der Login nicht mehr mit dem Benutzernamen möglich ist, sondern nur mit einer E-Mail-Adresse.
[COLOR=#59b300]//WordPress Authentifikation löschen[/COLOR]
[COLOR=#ff8000]remove_filter('authenticate', 'wp_authenticate_username_password', 20);[/COLOR]
[COLOR=#59b300]// Neue Authentifikation setzen - Anmelden nur mit E-Mail und Passwort[/COLOR]
[COLOR=#ff8000]add_filter('authenticate', function($user, $email, $password){[/COLOR]
[COLOR=#59b300] //Check for empty fields[/COLOR]
[COLOR=#ff8000] if(empty($email) || empty ($password)){
[COLOR=#59b300] //create new error object and add errors to it.[/COLOR][/COLOR]
[COLOR=#ff8000] $error = new WP_Error();
if(empty($email)){ [/COLOR][COLOR=#59b300]//No email[/COLOR]
[COLOR=#ff8000] $error->add('empty_username', __('<strong>FEHLER</strong>: Das E-Mail Feld ist leer.'));
}
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){[/COLOR] [COLOR=#59b300]//Invalid Email[/COLOR]
[COLOR=#ff8000] $error->add('invalid_username', __('<strong>FEHLER</strong>: Die E-Mail-Adresse ist ungültig'));
}
if(empty($password)){ [/COLOR][COLOR=#59b300]//No password[/COLOR]
[COLOR=#ff8000] $error->add('empty_password', __('<strong>FEHLER</strong>: Das Passwort-Feld ist leer.'));
}
return $error;
}[/COLOR]
[COLOR=#59b300] //Check if user exists in WordPress database[/COLOR]
[COLOR=#ff8000] $user = get_user_by('email', $email);[/COLOR]
[COLOR=#59b300]//bad email[/COLOR]
[COLOR=#ff8000] if(!$user){
$error = new WP_Error();
$error->add('invalid', __('<strong>FEHLER</strong>: Deine Eingaben sind ungültig.'));
return $error;
}
else{[/COLOR] [COLOR=#59b300]//check password[/COLOR]
[COLOR=#ff8000]if(!wp_check_password($password, $user->user_pass, $user->ID)){[/COLOR] [COLOR=#59b300]//bad password[/COLOR]
[COLOR=#ff8000] $error = new WP_Error();
$error->add('invalid', __('<strong>FEHLER</strong>: Deine Eingaben sind ungültig.'));
return $error;
}else{
return $user; [/COLOR][COLOR=#59b300]//passed[/COLOR]
[COLOR=#ff8000] }
}
}, 20, 3);[/COLOR]