I den första delen av denna serie täckte vi anpassningen av registrerings- och inloggningsformulären. Idag täcker vi hur du lägger till anpassade fält i registreringsformuläret. Vi lägger till en textinmatning för ett Twitter-handtag och en kryssruta där användarna måste komma överens om villkoren innan de registreras. Arbetet som krävs kan delas in i tre delar:
Vi kommer också väldigt kort diskutera de bästa sätten att utforma dina utgående e-postmeddelanden. Detta innebär att användarna kommer att få trevliga märkesvaror när de registrerar sig.
Snabbt innan vi börjar, se till Vem som helst kan registrera sig är markerad i dina WordPress-inställningar (Inställningar> Allmänt).
En av de bästa sakerna om WordPress är hur det förser dig med åtgärder och filter. Dessa tillåter oss att koppla till händelser eller filtrera innehåll, vilket ger oss möjlighet att utvidga WordPress graciöst.
Med hjälp av register_form-åtgärden, låt oss koppla in i registreringsformuläret och lägga till våra fält. Kopiera följande funktion till vår admin.php som vi skapade i en del av denna serie.
I grund och botten spruter vi några nya fält i vår registreringsblankett. Markeringen som används motsvarar den för de inbyggda fälten. Vi vill också behålla värdena om sidan laddas om, så vi ska kontrollera om de finns i
$ _POST
super global. Du kanske undrar varför vår Twitter-etikett är inslagna i en funktion:.
De
_E
funktionen tillåter översättning att ske - du kan läsa mer om det i WordPress Codex.Det här är bra, men hur är det med någon validering? Som det står kan användarna lägga vad de vill ha där eller bara lämna det tomt. Låt oss göra våra fält obligatoriska och se till att textfältet bara tar med vanliga tecken för att förhindra skadliga attacker. Den här gången använder vi ett WordPress-filter: registration_errors.
lägg till ('twitter_name_error', __ ('FEL: Vänligen ange ditt Twitter-namn. ',' Salvia ')); om preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __FEL: Använd endast bokstäver, siffror, mellanslag och understreck. ',' Salvia ')); om (tomt ($ _POST ['termer'])) $ errors-> add ('terms_error', __ ('FEL: Du måste godkänna villkoren. ',' Salvia ')); returnera $ fel add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);Ovanstående filter har passerat tre parametrar:
- Fel som har behandlats
- Användarens email
- Användarens saniterade användarnamn
Funktionen utlöses efter att formuläret skickats men innan data träffar databasen. I vårt fall kontrollerar vi om fälten är tomma och om det finns några bisarra tecken i vårt Twitter-namn. Om något av dessa är sanna skickar vi ett felmeddelande till
$ error
objekt som returneras.Obs! Om du får en tom fellåda, oroa dig inte. Säkerhetsprogrammet vi installerade i del ett har en standardinställning som döljer meddelandena. Under WordPress Tweaks avsnittet, avmarkera alternativet Inaktivera inloggningsfelmeddelanden.
Nu den sista delen av vårt pussel: bearbetar data så det sparas i vår databas mot den användaren. Återigen använder vi en WordPress-definierad åtgärd (user_register) för att koppla in i den här processen. Det tar en parameter, den
användar ID
-På så sätt vet man vem man ska spara data mot. Förutsatt$ _POST
superglobal innehåller vår data, vi kan spara den medupdate_user_meta
.Anpassade fält i administratören
Just nu har vi samlat användarnas data - inklusive våra anpassade fält - men vi kan inte redigera dessa värden i WordPress-administratören. Låt oss koppla upp det här. I vår admin.php lägg till följande funktion:
Genom att använda vissa WordPress-åtgärder kan vi enkelt lägga till egna fält.
Nu för att bearbeta den anpassade användaren meta.
Omdirigera på inloggning
Slutligen vill vi omdirigera våra användare till en viss sida när de är inloggade. Standard skickar dem till WordPress back-end. Glöm det. Låt oss skicka dem till en "mitt konto" -sida. För det första behöver du skapa den här sidan i bakre änden. Oroa dig inte för innehåll för nu, för vi kommer in i det i nästa del av serien.
Nu när vi har vår sida, klistra in koden nedan i ____. Php och ge den en provkörning. Om du antar att ditt "Mitt konto" -sida har sluggen
mitt konto
det borde fungera. Ännu en gång har vi använt ett WordPress-filter för att uppnå denna trolldom.I ett nötskal kontrollerar koden en användare, och om de är en administratörs användare, riktas de till standardplatsen, annars omdirigeras de till
mitt konto
sida. Allt detta utlöses när användaren loggar in med hjälp av filtret login_redirect.roller) && is_array ($ user-> roller)) // kolla efter administratörer om (in_array ('administrator', $ user-> roller)) // omdirigera dem till standardplaceringen $ redirect_to; annars returnera home_url ('profil'); annars returnera $ redirect_to; add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);En snabb notering om utgående e-postmeddelanden
När användare registrerar sig på din webbplats kommer de att få bekräftelsemail. Också om en användare glömmer sitt lösenord har de möjlighet att hämta det via e-post. Så det är viktigt att vi ger dessa e-postmeddelanden lite kärlek och uppmärksamhet om vi vill att vår medlemsplats ska vara allt som.
Nu finns det några sätt att göra detta. För alla purister där ute kan du använda WordPress-filter för att ändra e-postinnehållstypen och utforma dina e-postmeddelanden - se WordPress Codex. Alternativt finns det en mängd plugins där ute avsedda för detta ändamål.
Personligen gillar jag att använda MailChimp's Mandrill för att skicka e-postmeddelanden från mina WordPress-webbplatser. Det är inte för knepigt att installera och det är fullt av funktioner, varav en kan använda mallar / stilar till dina utgående e-postmeddelanden.
Vad kommer härnäst?
I nästa och sista delen av serien kommer vi att göra en grundläggande kontosektion där de inloggade användarna kommer att kunna redigera sina uppgifter. Vi vill också att administratörer ska kunna redigera dessa uppgifter från WP-administratörsområdet, så vi lägger till några anpassade fält där också.
Om du har några förslag eller frågor, vänligen lämna en kommentar. Jag gör mitt bästa för att svara i god tid.
Saker att notera
Observera: om du hämtar koden från GitHub-arkivet ingår den alla filer för att få ditt tema igång. Tanken är att du kan ta tag i repo och bara köra de nödvändiga Gulp and Bower-kommandon och du kommer vara borta! Om du bara vill ha de filer som innehåller kod som är specifika för denna serie listas filerna nedan.