Slik utvikler du et medlemssted med WordPress Del 2

Hva du skal skape

I den første delen av denne serien dekket vi på å tilpasse registrerings- og påloggingsskjemaene. I dag skal vi dekke hvordan du legger til egendefinerte felt i registreringsskjemaet. Vi legger til en tekstinngang for et Twitter-håndtak og en avkrysningsboks der brukerne må godta vilkår før de registreres. Arbeidet som kreves, kan deles inn i tre deler:

  • Legge til feltene selv
  • Validering på feltene
  • Behandler dataene

Vi vil også veldig kort diskutere de beste måtene å utforme dine utgående e-poster. Dette betyr at brukerne vil få gode merkede e-poster når de registrerer.  

Rask før vi begynner, sørg for Alle kan registrere seg er krysset i dine WordPress-innstillinger (Innstillinger> Generelt).  

Det er mye å gjøre; La oss komme i gang

En av de største tingene med WordPress er måten den gir deg med handlinger og filtre. Disse tillater oss å koble seg til hendelser eller filterinnhold, noe som gir oss muligheten til å utvide WordPress grasiøst.   

Så bruk register_form-handlingen, la oss koble til registreringsskjemaet og legge til feltene våre. Kopier følgende funksjon til vår admin.php som vi opprettet i del 1 av denne serien.

 

I utgangspunktet injiserer vi noen nye felt i vårt registreringsskjema. Markeringen som brukes, etterligner den av de innfødte feltene. Vi vil også beholde verdiene hvis siden oppdateres, så vi vil sjekke om de eksisterer i $ _POST super global. Du lurer kanskje på hvorfor vår Twitter-etikett er pakket inn i en funksjon: .

De _E funksjonen gjør det mulig å oversette - du kan lese mer om det i WordPress Codex.

Dette er flott, men hva med noen validering? Som det står, kan brukerne sette hva de vil ha der inne, eller bare la det være tomt. La oss gjøre feltene påkrevd og sørg for at tekstfeltet bare tar i vanlige tegn for å forhindre ondsinnede angrep. Denne gangen bruker vi et WordPress-filter: registration_errors. 

legg til ('twitter_name_error', __ ('FEIL: Vennligst skriv inn ditt Twitter-navn. ',' Salvia '));  hvis (preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __ ('FEIL: Vennligst bruk bokstaver, tall, mellomrom og understreker. ',' Sage '));  hvis (tomt ($ _POST ['vilkår'])) $ errors-> add ('terms_error', __ ('FEIL: Du må godta vilkårene. ',' Salvie '));  returner $ feil  add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);

Ovennevnte filter er passert tre parametere: 

  1. Feilene som har blitt behandlet
  2. Brukerens e-postadresse
  3. Brukerens sanitiserte brukernavn

Funksjonen utløses etter at skjemaet er sendt, men før dataene treffer databasen. I vårt tilfelle sjekker vi om feltene er tomme og hvis det er noen bisarre tegn i vårt Twitter-navn. Hvis noen av disse er sanne, sender vi en feilmelding til $ error objekt som returneres.   

Merk: Hvis du får en tom feilboks, ikke bekymre deg. Sikkerhetspluggen vi installerte i del ett har en standardinnstilling som skjuler meldingene. Under WordPress Tweaks delen, fjern merket for alternativet Deaktiver påloggingsfeilmeldinger.  

Nå er det siste stykket av puslespillet vårt: Behandle dataene, slik at det er lagret i databasen vår mot den aktuelle brukeren. Igjen vil vi bruke en WordPress-definert handling (user_register) for å hekte inn i denne prosessen. Det tar en parameter, den bruker-ID-På den måten vet han hvem som skal lagre dataene mot. Forutsatt $ _POST superglobal inneholder våre data, vi kan lagre det ved hjelp av update_user_meta.

Egendefinerte felt i administrasjonen

Akkurat nå har vi samlet brukerens data - inkludert våre egendefinerte felt - men vi kan ikke redigere disse verdiene i WordPress admin. La oss hekte det oppe. I admin.php legger du til følgende funksjon:

 

Ved hjelp av noen WordPress-handlinger kan vi enkelt legge til egendefinerte felt. 


Nå for å behandle egendefinert bruker meta. 

Viderekobling på innlogging

Til slutt vil vi omdirigere våre brukere til en bestemt side når de er logget inn. Standarden sender dem til WordPress-bakenden. Glem det. La oss sende dem til en "min konto" side. For det første må du opprette denne siden i bakenden. Ikke bekymre deg for innhold for nå, fordi vi kommer inn i det i neste del av serien. 

Nå som vi har vår side, lim inn koden under i ____. Php og gi den en prøvekjøring. Forutsatt at "min konto" -siden har sluggen min konto det burde fungere. Enda en gang har vi brukt et WordPress-filter for å oppnå denne trolldom. 

I et nøtteskall sjekker koden for en bruker, og hvis de er en admin bruker, blir de rettet til standardplassen, ellers blir de omdirigert til min konto side. Alt dette utløses når brukeren logger på ved hjelp av filteret login_redirect. 

rollene) && is_array ($ user-> roller)) // se etter admins hvis (in_array ('administrator', $ user-> roller)) // omdirigere dem til standardplassering $ redirect_to;  ellers return home_url ('profile');  ellers return $ redirect_to;  add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);

En rask notat om utgående e-poster

Når brukerne registrerer på nettstedet ditt, vil de motta bekreftelsesmeldinger. Også hvis en bruker glemmer passordet, har de muligheten til å hente den over e-post. Så det er viktig at vi gir disse e-postene litt kjærlighet og oppmerksomhet hvis vi vil at medlemskapet vårt skal være alt det. 

Nå er det noen måter å gjøre dette på. For alle purister der ute kan du bruke WordPress-filtre til å endre e-post innholdstypen og stil e-postene dine - se WordPress Codex. Alternativt er det en rekke plugins der ute designet for dette formålet. 

Personlig liker jeg å bruke MailChimp's Mandrill til å sende e-postmeldinger ut av mine WordPress-nettsteder. Det er ikke for vanskelig å sette opp og det er fullt av funksjoner, hvorav en kan bruke maler / stiler til utgående e-post. 

Hva blir det neste?

I neste og siste del av serien skal vi lage en grunnleggende kontoseksjon der de innloggede brukerne vil kunne redigere sine detaljer. Vi vil også at administratorer skal kunne redigere disse detaljene fra WP admin-området, så vi vil legge til noen egendefinerte felt der også.

Hvis du har noen forslag eller spørsmål, vennligst legg igjen en kommentar. Jeg vil gjøre mitt beste for å svare på en riktig måte. 

Ting å merke seg

Merk: Hvis du laster ned koden fra GitHub-depotet, inneholder den alle filene for å få temaet ditt i gang. Tanken er at du kan ta tak i repo og bare kjøre de nødvendige Gulp and Bower-kommandoene, og du vil være borte! Hvis du bare vil ha filene som inneholder kode som er spesifikk for denne serien, er filene oppført nedenfor. 

  • Alle filene i administrasjonsmappen  
  • lib / admin.php 
  • lib / membership.php
  • mal-user-profile.php
  • templates / header.php