Hoe een lidmaatschapssite met WordPress te ontwikkelen deel 2

Wat je gaat creëren

In het eerste deel van deze serie hebben we het aanpassen van de registratie- en aanmeldingsformulieren behandeld. Vandaag bespreken we hoe u aangepaste velden aan het registratieformulier kunt toevoegen. We voegen een tekstinvoer toe voor een Twitter-afhandeling en een selectievakje waarin gebruikers moeten instemmen met voorwaarden voordat ze zich registreren. Het vereiste werk kan in drie delen worden verdeeld:

  • De velden zelf toevoegen
  • Validatie op de velden
  • Verwerking van de gegevens

Wij zullen ook erg kort bespreek de beste manieren om uw uitgaande e-mails vorm te geven. Dit betekent dat gebruikers mooie e-mails ontvangen als ze zich registreren.  

Snel voordat we beginnen, zorg ervoor Iedereen kan registreren is aangevinkt in uw WordPress-instellingen (Instellingen> Algemeen).  

Er is veel te doen; Laten we beginnen

Een van de grootste dingen over WordPress is de manier waarop het u voorziet van acties en filters. Hiermee kunnen we inhaken op evenementen of inhoud filteren, waardoor we WordPress op een elegante manier kunnen uitbreiden.   

Dus gebruik de actie register_form, laten we inhaken op het registratieformulier en onze velden toevoegen. Kopieer de volgende functie naar onze admin.php die we in deel één van deze serie hebben gemaakt.

 

In feite injecteren we enkele nieuwe velden in ons registratieformulier. De gebruikte markup is die van de native velden. We willen ook de waarden behouden als de pagina opnieuw wordt geladen, dus we zullen controleren of ze bestaan ​​in de $ _POST super globaal. U vraagt ​​zich misschien af ​​waarom ons Twitter-label is ingepakt in een functie: .

De _e functie laat vertaling toe - je kunt er meer over lezen in de WordPress Codex.

Dit is geweldig, maar hoe zit het met een of andere validatie? In de huidige vorm kunnen gebruikers daar alles in doen wat ze willen of gewoon leeg laten. Laten we onze velden verplicht stellen en ervoor zorgen dat het tekstveld alleen normale tekens bevat om kwaadwillende aanvallen te voorkomen. Deze keer gebruiken we een WordPress-filter: registration_errors. 

add ('twitter_name_error', __ ('FOUT: Voer uw Twitter-naam in. ',' Sage '));  if (preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __ ('FOUT: Gebruik alleen letters, cijfers, spaties en onderstrepingstekens. ',' Sage '));  if (empty ($ _POST ['terms'])) $ errors-> add ('terms_error', __ ('FOUT: U moet akkoord gaan met de voorwaarden. ',' Sage '));  return $ fouten;  add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);

Het bovenstaande filter is geslaagd voor drie parameters: 

  1. De fouten die zijn verwerkt
  2. Het e-mailadres van de gebruiker
  3. De door de gebruiker gewiste gebruikersnaam

De functie wordt geactiveerd nadat het formulier is verzonden maar voordat de gegevens de database raken. In ons geval controleren we of de velden leeg zijn en of er bizarre tekens in onze Twitter-naaminvoer voorkomen. Als een van deze waar is, geven we een foutmelding door aan de $ error object dat wordt geretourneerd.   

Opmerking: als u een lege foutmelding krijgt, hoeft u zich geen zorgen te maken. De beveiligingsplug-in die we in deel één hebben geïnstalleerd, heeft een standaardinstelling die de berichten verbergt. Onder de WordPress Tweaks sectie, schakel de optie uit Schakel login foutmeldingen uit.  

Nu het laatste stukje van onze puzzel: de gegevens verwerken zodat deze in onze database tegen die gebruiker worden opgeslagen. Opnieuw zullen we een door WordPress gedefinieerde actie (user_register) gebruiken om aan dit proces mee te werken. Er is één parameter voor nodig, de gebruikersnaam-op die manier weet het wie de gegevens moet opslaan. Uitgaande van de $ _POST superglobal bevat onze gegevens, we kunnen het opslaan met update_user_meta.

Aangepaste velden in de beheerder

Op dit moment hebben we de gegevens van de gebruikers verzameld, inclusief onze aangepaste velden, maar we kunnen deze waarden niet bewerken in de WordPress-beheerder. Laten we dat aansluiten. Voeg in onze admin.php de volgende functie toe:

 

Door enkele WordPress-acties te gebruiken, kunnen we eenvoudig aangepaste velden toevoegen. 


Nu om de aangepaste gebruikers-meta te verwerken. 

Doorsturen bij inloggen

Ten slotte willen we onze gebruikers doorsturen naar een specifieke pagina wanneer ze zijn ingelogd. De standaard stuurt ze naar de WordPress-backend. Vergeet dat. Laten we ze naar een "mijn account" -pagina sturen. Dus eerst moet je deze pagina aan de achterkant maken. Maak je voorlopig geen zorgen over de inhoud, omdat we daar in het volgende deel van de serie op in zullen gaan. 

Nu we onze pagina hebben, plak de onderstaande code in ____. Php en geef het een proefrit. Ervan uitgaande dat uw "mijn account" -pagina de slak heeft mijn rekening het zou moeten werken. Nogmaals hebben we een WordPress filter gebruikt om deze tovenarij te bereiken. 

Kort gezegd: de code controleert een gebruiker en als deze een beheerder is, worden ze naar de standaardlocatie geleid, anders worden ze doorgestuurd naar de gebruiker. mijn rekening pagina. Dit alles wordt geactiveerd wanneer de gebruiker zich aanmeldt met behulp van het filter login_redirect. 

rollen) && is_array ($ user-> roles)) // controleer voor admins of (in_array ('administrator', $ user-> roles)) // redirect hen naar de standaardplaats return $ redirect_to;  else return home_url ('profiel');  else return $ redirect_to;  add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);

Een snelle opmerking over uitgaande e-mails

Wanneer gebruikers zich registreren op uw site, ontvangen ze bevestigingsmails. Ook als een gebruiker zijn wachtwoord vergeet, hebben ze de mogelijkheid om het via e-mail op te halen. Het is dus belangrijk dat we deze e-mails wat liefde en aandacht geven als we willen dat onze lidmaatschapspagina dat alles is. 

Nu zijn er een paar manieren om dit te doen. Voor alle puristen die er zijn, kunt u WordPress-filters gebruiken om het e-mailinhoudstype te wijzigen en uw e-mails te stijlen - zie de WordPress Codex. Als alternatief is er een groot aantal plug-ins die er zijn ontworpen voor dit doel. 

Persoonlijk gebruik ik de Mandrill van MailChimp om e-mails uit mijn WordPress-sites te verzenden. Het is niet te lastig om in te stellen en het zit vol met functies, waarvan er een is om sjablonen / stijlen toe te passen op je uitgaande e-mails. 

Wat is het volgende?

In het volgende en laatste deel van de serie maken we een standaard accountgedeelte waarin de ingelogde gebruikers hun gegevens kunnen bewerken. We willen ook dat beheerders deze gegevens kunnen bewerken vanuit het WP-beheerdersgebied, dus we zullen daar ook enkele aangepaste velden toevoegen.

Als u suggesties of vragen heeft, laat dan een reactie achter. Ik zal mijn best doen om tijdig te antwoorden. 

Dingen om op te letten

Let op: als u de code downloadt uit de GitHub-repository die het bevat alle bestanden om je thema in de lucht te krijgen. Het idee is dat je de repo kunt pakken en gewoon de nodige Gulp en Bower-opdrachten kunt uitvoeren en dat je weg bent! Als u alleen de bestanden wilt die code bevatten die specifiek zijn voor deze serie, worden de bestanden hieronder vermeld. 

  • Alle bestanden in de beheerdersdirectory  
  • lib / admin.php 
  • lib / membership.php
  • template-user-profile.php
  • templates / header.php