Ich erstelle Benutzer manuell programmgesteuert und möchte mich bei dem neu erstellten Benutzer anmelden. WP erleichtert den Zugriff auf das Hash-Passwort, nicht jedoch auf die Nur-Text-Version. Gibt es eine Möglichkeit, wp_signon () ohne das Klartext-Passwort zu verwenden?
Ich fand eine Person , die dies getan hat behauptet, hier , aber es funktioniert nicht für mich arbeiten.
VIELEN DANK!
login
authentication
emersonthis
quelle
quelle
Antworten:
wp_set_auth_cookie()
meldet einen Benutzer an, ohne sein Passwort zu kennen.quelle
is_user_logged_in()
scheint die Bedingung nicht zu funktionieren. Wissen Sie, ob es sich um etwas anderes als die Cookies handelt?wp_set_current_user
bevor duwp_set_auth_cookie()
meine Anmeldefunktion hinzugefügt . Ich denke, ich muss das überdenken. Ich werde auch nach wp_set_current_user suchen und darüber berichten. Vielen Dank für Ihre Hilfe!Der folgende Code erledigt die Aufgabe für die automatische Anmeldung ohne Passwort!
quelle
get_user_by()
Gibt bei einem Fehler false zurück. Überprüfen Sie daher, ob das WP_Error-Objekt falsch istIch habe hier eine andere Lösung gefunden , die einen besseren Ansatz verwendet (zumindest meiner Meinung nach ...). Sie müssen keine Cookies setzen, es wird die Wordpress-API verwendet:
Ich denke, der Code ist selbsterklärend:
Der Filter sucht nach dem WP_User-Objekt für den angegebenen Benutzernamen und gibt es zurück. Ein Aufruf der Funktion
wp_set_current_user
mit dem von zurückgegebenen WP_User-Objektwp_signon
, eine Überprüfung mit der Funktionis_user_logged_in
, um sicherzustellen, dass Sie angemeldet sind, und fertig !Ein schönes und sauberes Stück Code meiner Meinung nach!
quelle
$credentials
leer ist oder nicht. Wenn das Array nicht leer ist (was in meiner Antwort der Fall ist), werden die Werte aus dem Array verwendet, um den Benutzer zu authentifizieren.Das funktioniert gut für mich:
quelle
Neben Mike, Paul und Sjoerd:
login.php
Umleitungen besser handhaben :Wird
wp-config.php
gleich nachgelegtZu Ihrer Information
Basierend auf der obigen Lösung habe ich ein Plugin veröffentlicht, mit dem der Benutzer von WordPress zu WordPress eingeloggt bleibt, indem Benutzerdaten und Cookie-Sitzung synchronisiert werden:
https://wordpress.org/plugins/user-session-synchronizer/
quelle