Cum de a dezvolta un site de membru cu WordPress Partea 2

Ce veți crea

În prima parte a acestei serii am abordat personalizarea formularelor de înregistrare și de conectare. Astăzi vom discuta cum să adăugăm câmpuri personalizate la formularul de înregistrare. Vom adăuga o intrare de text pentru un mâner Twitter și o casetă de selectare în care utilizatorii vor trebui să accepte termenii înainte de înregistrare. Lucrările necesare pot fi împărțite în trei părți:

  • Adăugarea câmpurilor în sine
  • Validarea câmpurilor
  • Prelucrarea datelor

Vom, de asemenea foarte scurt discutați despre cele mai bune modalități de a modela e-mailurile de ieșire. Aceasta înseamnă că utilizatorii vor primi e-mailuri de marcă frumoase atunci când se înregistrează.  

Rapid înainte de a începe, asigurați-vă Oricine se poate înregistra este bifată în setările WordPress (Setări> Generalități).  

Sunt multe de făcut; Să începem

Unul dintre cele mai mari lucruri despre WordPress este modul în care vă furnizează acțiuni și filtre. Acestea ne permit să cârlig pe evenimente sau să filtreze conținut, ceea ce ne oferă posibilitatea de a extinde cu exactitate WordPress.   

Deci, folosind acțiunea register_form, hrănim în formularul de înregistrare și adăugăm câmpurile noastre. Copiați următoarea funcție în admin.php-ul nostru pe care l-am creat în prima parte a acestei serii.

 

Practic, injectăm câteva câmpuri noi în formularul nostru de înregistrare. Marcajul utilizat imită acest câmp nativ. De asemenea, dorim să păstrăm valorile dacă pagina este reîncărcată, așa că vom verifica dacă acestea există în $ _POST super global. S-ar putea să te întrebi de ce eticheta noastră Twitter este înfășurată într-o funcție: .

_E permite traducerea să apară - puteți citi mai multe despre aceasta în Codul WordPress.

Acest lucru este minunat, dar ce zici de o validare? În starea actuală, utilizatorii pot pune orice au nevoie acolo sau pot lăsa goale. Să facem câmpurile necesare și să ne asigurăm că câmpul de text are doar caractere obișnuite pentru a preveni atacurile rău intenționate. De data aceasta vom folosi un filtru WordPress: registration_errors. 

adăugați ('twitter_name_error', __ ('EROARE: Introduceți numele dvs. Twitter. ',' Sage '));  if (preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __EROARE: Vă rugăm să folosiți doar litere, numere, spații și underscore. ',' Sage '));  dacă (gol $ _POST ['terms'])) $ errors-> add ('terms_error', __EROARE: Trebuie să fiți de acord cu termenii. ',' Sage '));  return $ errors;  add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);

Filtrul de mai sus are trei parametri: 

  1. Erori care au fost procesate
  2. E-mailul utilizatorului
  3. Numele de utilizator dezinfectat al utilizatorului

Funcția este declanșată după trimiterea formularului, dar înainte ca datele să atingă baza de date. În cazul nostru, verificăm dacă câmpurile sunt goale și dacă există caractere bizare în introducerea numelui de Twitter. Dacă oricare dintre acestea este adevărată, trimitem un mesaj de eroare către $ eroare obiect care este returnat.   

Notă: dacă primiți o casetă de eroare goală, nu vă faceți griji. Pluginul de securitate pe care l-am instalat în prima parte are o setare implicită care ascunde mesajele. Sub WordPress Tweaks , debifați opțiunea Dezactivați mesajele de eroare de conectare.  

Acum, piesa finală a puzzle-ului nostru: prelucrarea datelor astfel încât acestea să fie salvate în baza noastră de date împotriva acelui utilizator. Din nou, vom folosi o acțiune definită de WordPress (user_register) pentru a intra în acest proces. Este nevoie de un parametru numele de utilizator-astfel știe cine să salveze datele. Presupunând $ _POST superglobal conține datele noastre, îl putem salva folosind update_user_meta.

Câmpuri personalizate din Admin

Chiar acum am colectat datele utilizatorilor - inclusiv câmpurile noastre personalizate - dar nu putem edita aceste valori în administratorul WordPress. Hai să ne prindem. În admin.php adăugați următoarea funcție:

 

Folosind câteva acțiuni WordPress, putem să adăugăm cu ușurință câmpuri personalizate. 


Acum, pentru a procesa meta utilizator personalizat. 

Redirecționați la conectare

În cele din urmă, vrem să redirecționăm utilizatorii noștri către o anumită pagină când sunt conectați. Implicit le trimite la sfârșitul WordPress. Uită asta. Să le trimitem la o pagină "contul meu". Deci, în primul rând, va trebui să creați această pagină în spate. Nu vă faceți griji cu privire la conținutul pentru moment, pentru că vom intra în asta în următoarea parte a seriei. 

Acum că avem pagina noastră, lipiți codul de mai jos în ____. Php și dați-i un test drive. Presupunând că pagina dvs. "contul meu" are slug contul meu ar trebui să funcționeze. Cu toate acestea, am folosit un filtru WordPress pentru a obține această vrăjitorie. 

Pe scurt, codul verifică un utilizator, iar dacă acesta este un utilizator de administrare, acesta este direcționat către locul implicit, altfel este redirecționat către contul meu pagină. Toate acestea se declanșează atunci când utilizatorul se conectează utilizând filtrul login_redirect. 

roluri) && is_array ($ user-> roles)) // verificați dacă administratorii (in_array ('administrator', $ user-> roles)) // redirecționează la locul implicit return $ redirect_to;  altceva return home_url ('profil');  altceva return $ redirect_to;  add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);

O notă rapidă privind e-mailurile trimise

Când utilizatorii se înregistrează pe site-ul dvs., vor primi e-mailuri de confirmare. De asemenea, dacă un utilizator uită parola, are posibilitatea de a-l recupera prin e-mail. Deci, este important să oferim acestor e-mailuri o dragoste și o atenție dacă dorim ca site-ul nostru de membru să fie totul. 

Acum există câteva moduri de a face acest lucru. Pentru toți puristii de acolo puteți folosi filtrele WordPress pentru a schimba tipul de conținut al e-mail-ului și stilul e-mail-urilor - a se vedea Codul WordPress. Alternativ, există o serie de plugin-uri proiectate în acest scop. 

Personal, îmi place să folosesc Mandrill de la MailChimp pentru a trimite e-mailuri din site-urile mele WordPress. Nu este prea dificil de configurat și este plin de caracteristici, dintre care unul este capabil să aplice șabloane / stiluri la e-mailurile de ieșire. 

Ce urmeaza?

În următoarea și ultima parte a seriei vom face o secțiune de bază de conturi prin care utilizatorii conectați vor putea să își editeze detaliile. De asemenea, dorim ca administratorii să poată edita aceste detalii din zona de administrare WP, așa că vom adăuga și câteva câmpuri personalizate acolo.

Dacă aveți sugestii sau întrebări, lăsați un comentariu. Voi face tot posibilul pentru a răspunde în timp util. 

Lucruri de notat

Rețineți: dacă descărcați codul din depozitul GitHub, acesta include toate fișierele pentru a vă crea tema. Ideea este că puteți să luați repo-ul și să conduceți comenzile Gulp și Bower necesare și veți fi plecați! Dacă doriți doar fișierele care conțin cod specific acestei serii, fișierele sunt enumerate mai jos. 

  • Toate fișierele din directorul de administrare  
  • lib / admin.php 
  • lib / membership.php
  • template-user-profile.php
  • template-uri / header.php
Cod