Ist es möglich, das Feld für den Benutzernamen von der Registrierungsseite zu entfernen?
Ich möchte, dass die Benutzer nur ihre E-Mail-Adresse und ihr Passwort eingeben.
Ein neuer Benutzer sollte nur anhand dieser beiden Parameter erstellt werden.
Ist das möglich und wenn ja, wie?
user-registration
phpnwordpress
quelle
quelle
Antworten:
Absolut JA , das können Sie erreichen.
Regel 1: WordPress benötigt einen Benutzernamen. Wir müssen einen Benutzernamen angeben.
Regel 2: Bearbeiten Sie den WordPress-Kerncode nicht.
Wir können dies erreichen, indem wir das Feld "Benutzername" verbergen, eine E-Mail erhalten und es als Benutzername speichern.
Schritt-1: Entfernen Sie das Textfeld Benutzername
Schritt 2: Entfernen Sie den Benutzernamen-Fehler
Schritt 3: Hintergrundregistrierungsfunktionalität manipulieren.
Fügen Sie den obigen Code in die Datei functions.php Ihres Themas ein .
Sie können auch ein vollständiges Plugin herunterladen, um dies zu erreichen.
Plugin: https://wordpress.org/plugins/smart-wp-login/
quelle
Schritt 3 im Beitrag von Nishant Kumars überprüft, ob
isset($_POST['user_login'])
das bei mir nicht funktioniert hat, da das Login das ist, was wir eigentlich entfernen wollen.Meine Lösung lautet wie folgt (in der Datei functions.php des Themas), auch als separate Funktion, um beim WordPress-Codestil zu bleiben:
quelle
@
und ersetzte das und.
in der E-Mail-Adresse als Benutzernamen:$_POST['user_login'] = str_replace(array('@', '.'), '_', $_POST['user_email']);
@Nishant Kumar gab die perfekte und zu akzeptierende Antwort auf diese Frage. Es gibt jedoch einen Fehler nach der Veröffentlichung der Wordpress 4.0-Version. Aus dem Kodex -
registration_errors
Filter hier erfordert eine kleine Änderung.Hinweis: Wie @mcnesium erwähnt, wenn wir vollständig aus dem Feld Benutzername losgeworden (in meinem Fall habe ich Theme Anmeldungs Plugin die reguläre Anmeldeformular außer Kraft zu setzen und dort habe ich nur den Benutzernamen Feld entfernt) , dann
$_POST['user_login']
wirdnull
und der Zustand nicht übereinstimmen überhaupt. Wir sollten das besser aus dem Zustand entfernen, wie es @mciterranean vorschlägt.quelle
Nach der Antwort von @ nishant-kumar ist hier ein Vanille-JS, kein zusätzliches JS-Skript, 1 Schritt, keine Backend-Bearbeitung erforderlich, Lösung, um ein Anmeldeformular nur mit der E-Mail-Eingabe zu erstellen:
Sie müssen nur diesen Code in Ihre functions.php- Datei einfügen (oder in Ihr benutzerdefiniertes Plugin , falls Sie eines haben)
quelle
user_email is not defined at HTMLInputElement.syncUserName
. Das Verschieben des Teils "function syncUserName" innerhalb der oberen Funktion behebt den Fehler und das Code-Snippet funktioniert sehr gut. Kommentieren Sie einfach, damit andere auf dasselbe Problem stoßen. Vielen Dank Gfra54.user_email
in den gleichen Bereich zu setzen. Vielen Dank.Ich denke, dass jede Lösung für diese Anfrage ein "Hack" sein wird, da WordPress erfordert, dass es einen Benutzernamen für alle registrierten Benutzer gibt. Selbst das oben erwähnte Plugin findet höchstwahrscheinlich nur den Benutzernamen über die E-Mail-Adresse und verwendet diesen Benutzernamen, um sich auf der Site anzumelden.
Wenn Sie mit einem Hack einverstanden sind, ist hier ein Konzept, das funktionieren könnte:
1) Füllen Sie das Feld "Benutzername" in Ihrem Registrierungsformular mit einer eindeutigen Nummer aus. Verwenden Sie den aktuellen Zeitstempel, um zu vermeiden, dass Sie jemals Duplikate erhalten. Sie würden dieses Feld dann ausblenden, damit der Benutzer es beim Ausfüllen seines Formulars nicht auf dem Bildschirm sieht.
Wenn Sie jQuery verwenden, können Sie Folgendes verwenden:
In diesem Beispiel wäre 'form input.username' der jQuery-Selektor, um das Feld username zu finden. Sie müssen die HTML-Struktur auf Ihrer Seite überprüfen, um sicherzustellen, dass der Selektor mit der Struktur übereinstimmt.
2) Verwenden Sie ein Plugin wie das zuvor erwähnte ( http://wordpress.org/extend/plugins/wp-email-login/ ), damit sich Benutzer mit ihrer E-Mail-Adresse anmelden können.
quelle