Im ersten Teil dieser Serie haben wir uns mit der Anpassung der Anmelde- und Anmeldeformulare befasst. Heute erfahren Sie, wie Sie dem Registrierungsformular benutzerdefinierte Felder hinzufügen. Wir fügen eine Texteingabe für ein Twitter-Handle und ein Kontrollkästchen hinzu, in dem die Benutzer vor der Registrierung den Bedingungen zustimmen müssen. Die erforderliche Arbeit kann in drei Teile unterteilt werden:
Wir werden auch sehr kurz Besprechen Sie die besten Möglichkeiten, um Ihre ausgehenden E-Mails zu gestalten. Dies bedeutet, dass Benutzer bei der Registrierung nette Marken-E-Mails erhalten.
Vergewissern Sie sich kurz bevor wir beginnen Jeder kann sich registrieren ist in Ihren WordPress-Einstellungen angekreuzt (Einstellungen> Allgemein).
Eines der größten Vorteile von WordPress ist die Art und Weise, wie es Ihnen Aktionen und Filter bietet. Dadurch können wir uns auf Ereignisse beschränken oder Inhalte filtern. Dies gibt uns die Möglichkeit, WordPress elegant zu erweitern.
Lassen Sie uns mit der Aktion register_form in das Registrierungsformular einbinden und unsere Felder hinzufügen. Kopieren Sie die folgende Funktion in unsere admin.php, die wir im ersten Teil dieser Serie erstellt haben.
Grundsätzlich fügen wir einige neue Felder in unser Anmeldeformular ein. Das verwendete Markup ahmt das der nativen Felder nach. Wir möchten die Werte auch beibehalten, wenn die Seite neu geladen wird. Wir werden also prüfen, ob sie in der vorhanden sind
$ _POST
super global. Sie fragen sich vielleicht, warum unser Twitter-Label in eine Funktion eingebunden ist:.
Das
_e
Funktion ermöglicht das Auftreten der Übersetzung - Sie können mehr darüber im WordPress-Codex lesen.Das ist großartig, aber wie wäre es mit einer Bestätigung? So wie es aussieht, können Benutzer das, was sie möchten, dort ablegen oder es einfach leer lassen. Lassen Sie uns unsere Felder ausfüllen und sicherstellen, dass das Textfeld nur reguläre Zeichen enthält, um böswillige Angriffe zu verhindern. Diesmal verwenden wir einen WordPress-Filter: registration_errors.
add ('twitter_name_error', __ ('ERROR: Bitte geben Sie Ihren Twitter-Namen ein. ',' Sage ')); if (preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __ ('ERROR: Bitte nur Buchstaben, Zahlen, Leerzeichen und Unterstriche verwenden. ',' Sage ')); if (leer ($ _POST ['terms'])) $ errors-> add ('terms_error', __ ('ERROR: Sie müssen den Bedingungen zustimmen. ',' Sage ')); $ -Fehler zurückgeben; add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);Der obige Filter erhält drei Parameter:
- Die Fehler, die verarbeitet wurden
- E-Mail des Benutzers
- Der bereinigte Benutzername des Benutzers
Die Funktion wird ausgelöst, nachdem das Formular gesendet wurde, aber bevor die Daten in die Datenbank gelangen. In unserem Fall prüfen wir, ob die Felder leer sind und ob bei unserer Twitter-Namenseingabe bizarre Zeichen vorhanden sind. Wenn eine dieser Bedingungen zutrifft, übergeben wir eine Fehlermeldung an
$ Fehler
Objekt, das zurückgegeben wird.Hinweis: Wenn Sie ein leeres Fehlerfeld erhalten, machen Sie sich keine Sorgen. Das Sicherheits-Plugin, das wir in Teil 1 installiert haben, hat eine Standardeinstellung, die die Nachrichten verbirgt. Unter dem WordPress Tweaks Deaktivieren Sie die Option Deaktivieren Sie Anmeldefehlermeldungen.
Nun das letzte Stück unseres Puzzles: Die Daten werden so verarbeitet, dass sie in dieser Datenbank gegen diesen Benutzer gespeichert werden. Wieder verwenden wir eine definierte WordPress-Aktion (user_register), um sich in diesen Prozess einzuhaken. Es braucht einen Parameter, den
Benutzeridentifikation
-Auf diese Weise weiß es, gegen wen die Daten gespeichert werden sollen. Angenommen der$ _POST
Superglobal enthält unsere Daten, die wir mit speichern könnenupdate_user_meta
.Benutzerdefinierte Felder im Admin
Momentan haben wir die Daten der Benutzer gesammelt - einschließlich unserer benutzerdefinierten Felder -, aber wir können diese Werte nicht im WordPress-Administrator bearbeiten. Lass uns das anschließen. In unserer admin.php fügen Sie folgende Funktion hinzu:
Mit einigen WordPress-Aktionen können Sie leicht benutzerdefinierte Felder hinzufügen.
Nun können Sie die benutzerdefinierte Meta bearbeiten.
Weiterleitung beim Login
Schließlich möchten wir unsere Benutzer auf eine bestimmte Seite umleiten, wenn sie angemeldet sind. Die Standardeinstellung sendet sie an das WordPress-Backend. Vergess das. Schicken wir sie auf eine "Mein Konto" -Seite. Zuerst müssen Sie diese Seite im Backend erstellen. Machen Sie sich jetzt keine Sorgen um den Inhalt, denn wir werden im nächsten Teil der Serie darauf eingehen.
Jetzt, da wir unsere Seite haben, fügen Sie den Code in ____. Php ein und machen Sie eine Probefahrt. Angenommen, Ihre "Mein Konto" -Seite hat den Slug
mein Konto
es sollte funktionieren. Wir haben wieder einen WordPress-Filter verwendet, um diese Zauberei zu erreichen.Kurz gesagt, der Code prüft, ob ein Benutzer ein Benutzer ist, und wenn er ein Administrator ist, wird er an den Standardort weitergeleitet, andernfalls werden sie an den Benutzer weitergeleitet
mein Konto
Seite. All dies wird ausgelöst, wenn sich der Benutzer mit dem Filter login_redirect anmeldet.rollen) && is_array ($ user-> rollen)) // auf Admins überprüfen if (in_array ('administrator', $ user-> rollen)) // umleiten an den Standardbereich return $ redirect_to; else return home_url ('profile'); else return $ redirect_to; add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);Ein kurzer Hinweis zu ausgehenden E-Mails
Wenn sich Benutzer auf Ihrer Website registrieren, erhalten sie Bestätigungs-E-Mails. Wenn ein Benutzer sein Passwort vergisst, kann er es auch per E-Mail abrufen. Daher ist es wichtig, dass wir diesen E-Mails etwas Liebe und Aufmerksamkeit schenken, wenn wir möchten, dass unsere Mitgliederseite all das ist.
Nun gibt es einige Möglichkeiten, dies zu tun. Für alle Puristen können Sie WordPress-Filter verwenden, um den E-Mail-Inhaltstyp zu ändern und Ihre E-Mails zu formatieren. Siehe WordPress-Codex. Alternativ gibt es eine Vielzahl von Plugins, die für diesen Zweck entwickelt wurden.
Persönlich benutze ich gerne MailChimps Mandrill, um E-Mails von meinen WordPress-Sites zu senden. Das Einrichten ist nicht zu kompliziert und es ist voll von Funktionen, von denen eine Möglichkeit ist, Vorlagen / Stile auf Ihre ausgehenden E-Mails anzuwenden.
Was kommt als nächstes?
Im nächsten und letzten Teil der Serie werden wir einen grundlegenden Kontoabschnitt erstellen, in dem die angemeldeten Benutzer ihre Details bearbeiten können. Wir möchten auch, dass Administratoren diese Details im WP-Administrationsbereich bearbeiten können. Daher werden wir dort auch einige benutzerdefinierte Felder hinzufügen.
Wenn Sie Anregungen oder Fragen haben, hinterlassen Sie bitte einen Kommentar. Ich werde mein Bestes geben, um rechtzeitig zu antworten.
Dinge zu beachten
Bitte beachten Sie: wenn Sie den Code aus dem darin enthaltenen GitHub-Repository herunterladen alle Dateien um dein Thema zum Laufen zu bringen. Die Idee ist, dass Sie sich das Repo besorgen können und einfach die nötigen Gulp- und Bower-Befehle ausführen können. Wenn Sie nur Dateien wünschen, die Code enthalten, der für diese Serie spezifisch ist, werden die Dateien unten aufgeführt.