Gelegentlich kommt es vor, da möchte man ein eigenes Anmeldeformular für seine Benutzer bauen. Das ist glücklicherweise nicht so schwer, da WordPress hier einige Tools mit an die Hand gibt. Dazu gibt es auch zahlreiche Plugins, mit denen sich eine Anmeldung realisieren lässt. Hier erfährst du, wie du ein Passwort überprüft und anschließend einen Benutzer anmeldest.
Passwort überprüfen
Um ein Passwort zu überprüfen, nutzen wir die WordPress-Funktion wp_check_password
. Mit dieser Funktion können wir das Klartext-Passwort mit dem Passwort in der Datenbank gegenprüfen.
$email = $_POST['email'];
$password = $_POST['password'];
$user = get_user_by( 'email', $email );
if ( $user && wp_check_password( $password, $user->data->user_pass, $user->ID ) ) {
// Erfolg
}
Code-Sprache: PHP (php)
Zuerst legen wir unsere Benutzereingaben in Variablen ab. Vorher solltest du hier noch überprüfen, ob alles sicher und richtig ist. Das habe ich hier jetzt nicht gemacht. Anschließend nutzen wir die E-Mail, um den WordPress-Benutzer zu ermitteln. Dies geht mit get_user_by
.
Jetzt folgt die magische Funktion innerhalb der Anweisung, wenn die erfolgt, ist das Passwort korrekt und du kannst, die ID des Benutzers nutzen, um ihn anzumelden.
Nützliche Links:
- Data Sanitization/Escaping – WordPress.org
Anmeldung mittels PHP
Um jetzt einen Benutzer anzumelden, benötigen wir die ID des Benutzers, die wir im vorherigen Teil ermittelt haben. Nun machen wir Folgendes:
wp_clear_auth_cookie();
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID );
Code-Sprache: PHP (php)
Zuerst stellen wir sicher, dass alle Cookies gelöscht werden, die mit der Authentifizierung von WordPress zu tun haben. Dafür nutzen wir die Funktion wp_clear_auth_cookie
.
Mit wp_set_current_user
setzen wir dann den aktuellen Benutzer. Hier verwenden wir die ID des Benutzers, damit WordPress auch weiß, welcher Benutzer gerade gesetzt ist.
Jetzt setzen wir erneut das Cookie für die Authentifizierung mit wp_set_auth_cookie
.
Das war’s. Du kannst jetzt Weiterleitungen setzen, oder die Seite aktualisieren. Der Benutzer ist dann angemeldet und alles funktioniert wie gewollt.
Zusammenfassung
$email = $_POST['email'];
$password = $_POST['password'];
$user = get_user_by( 'email', $email );
if ( $user && wp_check_password( $password, $user->data->user_pass, $user->ID ) ) {
wp_clear_auth_cookie();
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID );
}
Code-Sprache: PHP (php)