Nachdem ich ein paar Tage gesucht und 2 Jahre alte Threads gelesen habe, habe ich Schwierigkeiten, eine Lösung für das Problem zu finden, dass sich Benutzer nur per E-Mail anmelden.
Zuerst freute ich mich, WP_Email_Login zu sehen, nur um herauszufinden, dass Sie Ihren Benutzernamen weiterhin zum Anmelden verwenden können. Ich bin mir nicht sicher, wie ich das als Plugin schreiben soll. Meine Idee ist es, die Funktion register_new_user zu überschreiben. Ich habe dies nicht auf der "steckbaren" Funktionsliste gesehen. Kann ich Filter / Aktionen verwenden, um dies zu erreichen?
Mir ist klar, dass es nicht in Mode ist, die Kerndateien zu bearbeiten. Ich hoffe, dass es eine Lösung gibt, aber wenn es keine gibt, gehe ich mein Risiko ein. In der ersten Zeile der Funktion "register_new_user" in wp-login.php kann ich hinzufügen:
$nickname_variable(??) = $user_login // set the nickname to the username
$user_login = $user_email; // set the user_login/username to the email address
Dies funktioniert sehr gut, da WordPress es nicht erlaubt, den Benutzernamen zu ändern. Auf dem Registrierungsbildschirm (Formular) werden Sie nach dem Benutzernamen und der E-Mail-Adresse gefragt. Ich möchte den Benutzernamen auf die Variable "Spitzname" setzen (wenn mir jemand sagen kann, wie die Spitznamenvariable heißt oder wo sie bei der Registrierung festgelegt wurde, wäre das wünschenswert).
Prost,
Schmied
Antworten:
Update: Ich habe ein Plugin für Login, Registrierung und Passwortabfrage per E-Mail erstellt. https://wordpress.org/plugins/smart-wp-login/
Kurz gesagt, Sie können WordPress so konfigurieren, dass es sich per E-Mail anmeldet.
Drei Schritte:
Eine Note:
Entfernen Sie die Standardauthentifizierungsfunktion von WordPress.
WordPress verwendet den " Authentifizierungs " -Filter, um eine zusätzliche Überprüfung bei der Benutzeranmeldung durchzuführen.
Benutzerdefinierte Authentifizierungsfunktion hinzufügen
Ändere den Text "Username" in wp-login.php in "Email"
Wir können den gettext- Filter verwenden, um den Text "Benutzername" in "E-Mail" zu ändern, ohne die Kerndateien zu bearbeiten.
Ich habe auch einen detaillierten Artikel in meinem Blog geschrieben: http://www.thebinary.in/blog/wordpress-login-using-email/
quelle
Möglicherweise müssen Sie den Filter für den Namen ändern.
Eine Alternative ist ein Plugin, das Sie über Google oder im Plugin Repo finden; Vielleicht dieses Plugin .
quelle
Verwenden Sie den obigen Code:
Wir mussten nur überprüfen, ob der angegebene Benutzername mindestens wie eine E-Mail aussah und den Benutzernamen, falls nicht, sabotieren.
quelle
'@'
den Benutzernamen verfügt Wordpress über eine praktische integrierte Funktion: sanitize_email gibt entweder ein gültiges E-Mail-Adressformat oder nichts zurück:sanitize_email('email¬!"@business_com'); // Returns nothing
es ist schon in
WP-CORE
!Jetzt erlaubt WordPress bereits, EMAIL als Benutzernamen zu registrieren. Wenn Sie jedoch über bereits registrierte Benutzer sprechen, versuchen Sie es mit den aufgeführten Antworten.
quelle
Leichte Änderungen am obigen Code sollten alles sein, was für eine elegante Lösung erforderlich ist. Das Dokumentation für den Authentifizierungs-Hook gibt an, dass entweder ein
WP_User
Objekt oderWP_Error
Objekt zurückgegeben werden soll.Der Quellcode für die Funktion wp_authenticate_username_password durchläuft einige ziemlich einfache Prüfungen. Wir können einfach die Art und Weise replizieren, wie diese Prüfungen durchgeführt werden, und ein neues
WP_Error
Objekt erstellen , um mit der E-Mail-Adresse umzugehen. Alternativ können wir denwp_authenticate_username_password
Code sogar aufbocken und nach Belieben ändern, obwohl dies unnötig erscheint, es sei denn, Sie möchten die Funktionsweise wirklich anpassen. Der folgende Code sollte den Trick machen: (Obwohl ich es selbst nicht getestet habe ...)quelle
Dafür gibt es ein Plugin:
E-Mail-Anmeldung erzwingen
https://br.wordpress.org/plugins/force-email-login/
Es ist auch auf Github: https://github.com/miya0001/force-email-login
quelle