Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Sestavit vlastní WordPress uživatelské toku – část 2: Registrace nového uživatele

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Build a Custom WordPress User Flow.
Build a Custom WordPress User Flow — Part 1: Replace the Login Page
Build a Custom WordPress User Flow — Part 3: Password Reset

Czech (Čeština) translation by Jakub Dokoupil (you can also view the original English article)

V prvním kurzu této řady na přizpůsobení WordPress přihlášení jsme vytvořili zásuvný modul, který umožňuje nahradit WordPress přihlašovací obrazovka s vlastní stránky. Dnes budeme jít ještě o krok dále a nahradit nový tok registrace uživatele stejným způsobem.

Důvody pro přizpůsobení na přihlašovací stránce jsme si nastínili v části 1 (odpovídající registrační stránku s tématem vaší stránky skrýt WordPress a aby se uživateli bezproblémové) se vztahují i na registrace nového uživatele, ale jsou zde i některé konkrétní důvody, proč můžete chtít vytvořit vlastní registrační stránce:

  • Za prvé při registraci, můžete chtít změnit pole, co žádáte od nových členů, přidáte další pole nebo možná některé klesá. Jako příklad, v tomto kurzu budeme odstranit pole uživatelské jméno a jako přihlášení použijte e-mailovou adresu nového uživatele.
  • Za druhé je registrace spam. Když jsem poprvé otevřel registrace pro všechny na mých stránkách, netrvalo déle než pár hodin pro první registraci spam vystoupit, další následující těsně po válce. Přidání reCAPTCHA pole na stránce vlastní registrace je dobrý způsob, jak zvládnout při zachování konzistentní uživatelské zkušenosti.
  • Konečně můžete chtít provést některé vlastní akce na registraci, například přidání nového uživatele do seznamu adresátů. Poté, co postavil vlastní registrace toku, to bude snazší než kdy předtím.

Takže vybavené touto sadou důvodů, můžeme začít.

V tomto kurzu se dozvíte jak nahradit vlastní stránky WordPress registrační obrazovky a k provedení registrace s kódem, aniž by porušil principy návrhu WordPress.

Funkce bude postaveno zásuvný modul jsme vytvořili v části 1 tutoriál série, takže pokud jste jej ještě nečetli, to je dobrý nápad začít kontrolou tohoto kurzu. Můžete napsat kód, zatímco po kurzu nebo stáhnout příklad kódu z Github projektu kurz.

Přidat stránku vlastní registrace nového uživatele

Výchozí WordPress nové registrační stránce uživatele na wp-login.php? action = registr vypadá takto:

WordPress new user registration screen

Není to špatné, ale pokud máte spuštěnou WordPress.org, je s největší pravděpodobností není konzistentní s designem blogu nebo webové stránky.

Poznámka: Pokud nemůžete získat přístup na registrační stránku na vašem webu WordPress, proto ve výchozím nastavení nepovoluje WordPress novým uživatelům zaregistrovat se. Chcete-li toto nastavení změnit, přejděte na stránku Obecné nastavení ve vašem admin Dashboard a zaškrtněte políčko před "Může zaregistrovat každý uživatel". Poté nastavení uložte a vraťte na stránku registrace.

Check this checkbox to enable new user registration in WordPress

V první části série vytvořili jsme vlastní stránky pro zobrazování přihlašovací formulář a krátký, který byl použit k umístit přihlašovací formulář na této stránce. A teď uděláme totéž pro registraci: za prvé, vytvoříme krátký pro zobrazení registračního formuláře a stránky, na které bude umístěna tento zkrácený.

Je také možné umístit krátký na jinou stránku nebo mít přihlašovací a registrační formuláře na jedné stránce.

Krok 1: Vytvořit krátký

Stavění na plugin vytvořené v části 1 série, začněme přidáním zkrácený na stránce registrace.

Na konci třídy modulu (Personalize_Login_Plugin) konstruktoru, přidejte následující definici krátký:

Vytvořte funkci zodpovědný za vykreslování formuláři Registrace nového uživatele:

Pokud jste již četli část 1 série, můžete si všimnout mnoho podobností mezi tuto funkci a funkce vykreslení formuláře přihlášení z tohoto kurzu.

Za prvé na tratích 10-12, můžete si všimnout, že krátký má atribut show_title, používaný pro definování, zda název by měl být vyškvařena krátký nebo ne.

Za druhé registrační formulář není zobrazen uživatelům, kteří jsou již přihlášeni (linky 14-15). Zpráva vrácena namísto formuláře je velmi jednoduchá, takže podle potřeby, možná budete chtít nahradit tento kus kódu něco propracovanější – například odkaz zpět na řídicím panelu.

Novým prvkem je vyhledat možnost users_can_register WordPress na lince 16. Tato možnost je řízena pomocí WordPress obecná nastavení pole, které může zaregistrovat každý uživatel výše uvedených. Ujistěte se, že budeme respektovat nastavení, která uživatel definuje v WordPress, jsme neměli zobrazí registrační formulář je-li nastavena na hodnotu false. Místo toho jak vidíte na lince 17, vrátí funkce oznámení o registraci uzavírá.

Skutečné vykreslení registračního formuláře se provádí na lince 19 pomocí PHP šablony, register_form.php, umístěný v adresáři šablon, které jsme vytvořili v předchozím cvičení. Viz část 1 pro delší vysvětlení jak to funguje stejně jako kód pro funkci použít, get_template_html.

A teď Pojďme přidat šablonu formuláře registrace.

Krok 2: Vytvoření registračního formuláře

V adresáři šablony přidejte nový PHP soubor a pojmenujte ji register_form.php. Pokračujte přidáním registračního formuláře s poli, váš nový uživatel vyplnit.

Tady je verze, kterou jsem vytvořil pro tento kurz; poměrně standardní registrační formulář s poli pro uživatele e-mailu, křestní jméno a příjmení. Formulář neobsahuje samostatné pole pro uživatelské jméno, jako e-mailová adresa bude sloužit jako jeden.

Stejně jako výchozí WordPress registrace nového uživatele naše verze bude generovat heslo a e-mail na nového uživatele. To slouží jako jednoduchý e-mail kontrola (uživatel nebude moci přihlásit, aniž byste zadali platnou e-mailovou adresu) a vynucuje jistou úroveň zabezpečení hesla.

Samozřejmě tento přístup má své vlastní bezpečnostní riziko v podobě odesílání hesel, takže je to dobrý nápad požádat (nebo dokonce vyžadují) uživateli změnit heslo po přihlášení.

Na řádcích 2-4 šablona vykresluje titul pro formuláře, pokud je nastaven atribut show_title.

Pak, na lince 6, podívejte se na parametru akce: formulář je odeslán na výchozí WordPress registrace URL, které můžeme získat pomocí funkce wp_registration_url. Brzy budeme mluvit o toho víc, ale zmíním už teď, že to neznamená, že dáme WordPress zpracování registrace...

Zbytek šablony je spíše standardní HTML formuláře s poli pro e-mailu, křestní jméno a příjmení.

Než se dostaneme k vidět nedostatek v akci, stále potřebujeme vytvořit registrační stránku a umístěte krátký na něm.

Krok 3: Vytvoření nové stránky registrace uživatele

Chcete-li zobrazit formulář registrace, budete muset přidat následující kód na stránce WordPress:

To by mohlo být jakékoli stránky, ale teď, pojďme vytvořit novou stránku pro registrační formulář.

V předchozí části jsme vytvořili funkci, plugin_activated, pro tvorbu stránek plugin na aktivaci pluginu. Uvnitř funkce jsme přidali pole pro ukládání všech stránek, které by měly vytvořit plugin.

A teď Pojďme přidat informace o nové stránce do pole. Po přidání, definice pole by měl vypadat takto, s novou stránku (s popisu člen registr) definováno naposledy:

Aktivace hák lze spustit pouze když je aktivován plugin, tak do toho a deaktivovat a aktivovat plugin na stránce pluginy. Teď, když přejdete na adresu URL http://<YOUR site="">/member-register, měli byste vidět něco podobného (pomocí aktuální výchozí téma WordPress, dvacet patnáct):</YOUR>

Custom new user registration form

Krok 4: Přesměrujte uživatele na naši novou stránku registrace

Ještě než se vrhneme do provádění registrace akce, tak zkontrolujte, zda uživatel je vždy přesměrován na této nové registrační stránku namísto výchozí stránky pro nové uživatele na wp-login.php? action = registr.

K tomu použijeme háček login_form_ akce {akce}, která, jak si možná pamatujete z části 1, je aktivována před každou akcí v wp-login.php. Jak můžete vidět z výše uvedeného odkazu, akce je v tomto případě registr a tak, budeme připojit naši funkci login_form_register.

V pluginu konstruktoru přidejte následující řádek:

Vytvořte funkci zpětného volání:

Jak jsme to dali funkci na akci login_form_register, víme, že se uživatel pokouší buď přístup nového registračního formuláře uživatelem nebo zaúčtovat.

Proto první věc, které děláme v této funkci (na lince 6) je ke kontrole metoda požadavku, který byl použit pro přístup ke stránce: přesměrování je provedeno pouze na požadavky GET, jako požadavek POST bude vyhrazena pro provádění registrace akce. Více informací o tomto brzy.

Funkce potom pokračuje kontrolou, pokud uživatel je již přihlášen (linka 7).

Přihlášení uživatelé přesměrováni na stránku account (nebo správce řídicího panelu, pokud jsou správci) pomocí funkce redirect_logged_in_user, které jsme vytvořili v části 1. Návštěvníci přesměrováni na naši novou stránku-Zaregistrujte se.

A teď se stránkou a formuláři v místě, jdeme do co se stane, když uživatel formulář odešle.

Registrovat nového uživatele

Když uživatel odešle nový registrační formulář uživatele, jeho obsah jsou zaúčtovány do wp-login.php? action = registr, stejnou adresu URL, použili jsme při přesměrování uživatele na registrační stránce výše.

K vlastnímu nastavení, jsme se již zmínili (a co je nejdůležitější, pomocí e-mailovou adresu jako uživatelské jméno) budeme muset nahradit tuto funkci s naším vlastním kódem. Chcete-li to, budeme nejprve vytvořit funkci pro registraci nového uživatele programově a potom volat tuto funkci v popisovač akce.

Krok 1: Vytvoření uživatele

Začněme tím, že vytvoří funkci, která slouží k registraci nového uživatele pomocí dat shromážděných z výše uvedeného formuláře: e-mailovou adresu, jméno a příjmení. E-mailová adresa bude pouze jedinečný identifikátor, a zbytek je jen něco pěkného mít.

Modul třídy přidejte následující soukromé funkce:

Jak jsem již zmínil výše, e-mailová adresa je pouze jedinečný identifikátor, a také jediný požadovaný parametr. Proto se začneme funkci tím, že ověří jeho hodnotu. Nejprve na lince 15 musíme ověřit e-mailovou adresu a potom na řádku 20 jsme ověřit e-mailovou adresu již není v provozu. Je-li některý z ověření nezdaří, je vrácen objekt Wp_Error. Vrátíme se k zobrazení těchto chyb brzy.

Pokud vše půjde dobře a jsou nalezeny žádné chyby, funkce pokračuje tím, že generování hesla na lince 26.

Na řádcích 28-37 najdete jádro této funkce, vytvoření nového uživatele. Uživatel je přidán pomocí wp_insert_user funkce WordPress. (řádek 37). Jako její jediný parametr funkce přijímá asociativní pole s informacemi o uživateli vytvářený. Jak můžete vidět na tratích 28-35, používáme $email pro uživatelské jméno (user_login) a pole e-mailu (e-mail). Úplný seznam polí, které mohou být zahrnuty v poli atribut Podívejte se na WordPress codex.

Po vytvoření uživatele, na lince 38, volání funkce wp_new_user_notification k odeslání vygenerované heslo k novému uživateli a upozornit správce webu nového uživatele.

Krok 2: Volání registrační kód, když uživatel odešle formulář

Teď, když jsme napsali kód pro registraci uživatele, říkáme tomu při odeslání registračního formuláře.

Dříve když jsme přidali přesměrovat na vlastní registrační stránku pomocí akce login_form_register, jsem se zmínil že použijeme stejnou akci také pro zpracování požadavků POST.

Jak je často případ v programování, to není jediný způsob, jak bychom mohli zvládnout registrace nového uživatele, ale má poměrně významné výhody: tímto způsobem zajistíme, aby náhodou nikdo nemůže přistupovat registrační kód výchozí WordPress.

Pro přehlednost, Pojďme přidat funkci a uvažte ji na stejnou akci (technicky, neexistuje žádný důvod, proč nelze stejně jako přidat tento kód přesměrování funkce jsme vytvořili výše).

V konstruktoru modul třídy přidejte definici nové akce:

Vytvořte funkci:

Funkce začíná kontrola metoda požadavku na lince 8: funkce je spojena login_form_register akce WordPress, používá stejný že jsme použili pro přesměrování uživatele, a metoda požadavku je to, co odlišuje dva od sebe navzájem.

Na lince 11 můžeme ověřit, že registrace nových uživatelů je povolen. Pokud tomu tak není, uživatel je přesměrován zpět na stránku registrace s kódem chyby (uzavřené) jako parametr dotazu (registr chyby).

Na druhé straně Pokud registrace je otevřena, funkce shromažďuje požadované parametry (linky 15-17) od data požadavku a je používá pro volání funkce jsme vytvořili výše (linka 19) vytvoření nového uživatele.

Po volání register_user funkce přesměruje uživatele na správné místo, podle toho, zda byla úspěšná registrace nového uživatele:

  • Po úspěšné přesměrování je uživatel přesměrován na přihlašovací stránku, s parametr $registered označující, že byl právě vytvořen nový uživatel.
  • V případě chybu body přesměrování zpět do registračního formuláře s kódy chyb z funkce registrace nového uživatele jsou sloučeny do čárkami oddělený seznam a součástí žádosti (linky 23-24).

Krok 3: Zobrazení chybové zprávy a zprávy úspěch

Jak jsme viděli výše, registrace funkce přesměruje uživatele na přihlašovací stránku, pokud registrace byla úspěšná a pak zpět na registrační stránku, pokud došlo k chybám, se stavem předaný jako parametr požadavku.

A teď Pojďme přidat kód, chcete-li zobrazit tyto zprávy uživateli, počínaje chybové zprávy na stránce registrace nového uživatele.

V render_register_form přidejte následující kus kódu těsně před vykreslování šablony:

Tento úryvek nejprve zkontroluje, pokud chyby byly předány v požadavku parametru registru chyby (linka 2). Pokud ano, jde to přes všechny z nich, Vyhledávám odpovídající chybové zprávy pomocí funkce get_error_message jsme vytvořili v části 1 výukový program seriálu.

Chybové zprávy jsou shromažďovány do pole v poli $attributes pro tisk v šabloně.

Chcete-li být schopen ukázat správné chybové zprávy, budeme také potřebovat přidat nové chybové zprávy do funkce get_error_message. Ve struktuře přepínače přidat tyto (nebo vlastní) chybové zprávy:

Chcete-li zobrazit chyby na stránce registrace, přidejte následující kód v šabloně register_form.php mezi titul a formuláři:

Dále přidáte zprávu o úspěchu.

Po úspěšném zaregistrování nového uživatele je uživatel přesměrován na přihlašovací stránku, s parametrem, registrované = {e-mail} k adrese URL.

Ve funkci render_login_form přidejte následující dva řádky zkontrolujte, zda existuje parametr:

V šablony login_form.php, přidejte zprávu, která se zobrazí, pokud je nastaven příznak pro registrované:

To je ono. Nyní jste vytvořili kompletní nové registrace uživatele tok ověření parametrů a hlášení chyb.

Do toho vytvořit nový uživatelský účet otestovat toku.

Sign In page shows a success message

Pokud testujete plugin na místním serveru, pokud jste nakonfigurovali nastavení emailer, nebudete moci přijímat e-mail obsahující heslo – to je normální.

Ochrana před nevyžádanými registrace společnosti Google reCAPTCHA

Registrační formulář je nyní kompletní, jsme budete držet přizpůsobení to trochu víc zavedením reCAPTCHA kontroly (to je "Nejsem robot" checkbox najdete na mnoha větších lokalit online) aby se zabránilo spammery registrace vytvářet účty na vašem webu.

Krok 1: Získejte klíč Captcha

Za prvé navštivte stránky reCAPTCHA. Klepněte na tlačítko "Get" reCAPTCHA "" v pravém horním rohu pro přístup k admin stránce reCAPTCHA.

Google reCAPTCHA web site

Pokud nejste přihlášeni k účtu Google, budete vyzváni k přihlášení. Pokud jej nemáte, bude nutné ji vytvořit pomocí tohoto nástroje.

Na stránce účet služby reCAPTCHA najdete následující formulář. Používejte k vložení informací o vašem webu.

Registering a new site for reCAPTCHA

Jakmile odešlete formulář klepnutím na registr, uvidíte stránku s pokyny týkající se povolení reCAPTCHA na webu, stejně jako dva klíče používané pro používání rozhraní API: stránky a tajný klíč.

Chcete-li uložit klíče v našich WordPress plugin, budeme potřebovat vytvořit dvě nastavení pole. Udržet věci jednoduché, budeme je přidat do obecné nastavení a není ještě vytvořit stránku vlastní nastavení.

Chcete-li přidat nastavení pole, nejprve připojte novou akci. V pluginu konstruktoru přidejte následující nový řádek:

Pak vytvořte funkce pro definování nastavení pole a dvě funkce zpětného volání pro vykreslování polí nastavení:

Tento kurz není o WordPress nastavení rozhraní API, nepůjdeme přes deklarace pole nastavení. Pokud nejste obeznámeni s jak Přidání nastavení WordPress funguje, podívejte se na tuto kompletní výukový program série Toma McFarlin.

Nyní přejděte na stránku Obecné nastavení a kopírování klíčů reCAPTCHA do dvou polí, které jste právě vytvořili a uložte nastavení.

Settings for reCAPTCHA

Krok 2: Zobrazit CAPTCHA

S přípravami, hotovo můžeme nyní přidat pole reCAPTCHA a použít k ověření, že naši uživatelé jsou lidské.

V render_registration_form nejprve načíst klíč lokality reCAPTCHA z WordPress nastavení a uložte ji v poli $attributes aby bylo k dispozici v šabloně:

Pomocí parametru, potom přidejte zástupný symbol pro pole reCAPTCHA v registračním formuláři, přímo nad tlačítko Odeslat:

Pole skutečné reCAPTCHA bude umístěna uvnitř div nad pomocí jazyka JavaScript. Takže chcete-li zobrazit pole, bude stále musíme zahrnout JavaScript v zápatí stránky.

WordPress má konkrétní akce právě pro toto použití. Přidejte následující řádek v pluginu konstruktoru:

Vytvořte funkci, add_captcha_js_to_footer, který vytiskne JavaScript zahrnout značku, která načte reCAPTCHA API od společnosti Google:

Teď když jdete na registrační stránce, měli byste vidět pole reCAPTCHA na místě:

The reCAPTCHA field in action

Krok 3: Zkontrolujte CAPTCHA

Pokud JavaScript založené "není robot" kontrola je úspěšný, reCAPTCHA widget přidá nový parametr k formuláři, g-recaptcha odpověď. Pak v ověření straně serveru ve funkci do_register_user, můžeme použít parametr zjistit, že uživatel prošlo testem.

Za prvé pojďme vytvořit funkci pro kontrolu parametru reCAPTCHA:

Na tratích 9-13 funkce načte odpověď reCAPTCHA. Pokud není nalezen, uživatel nebyl ani se pokusil dokončit test před odesláním formuláře.

Potom na tratích 16-24, využívá funkce wp_remote_post k odesílání požadavku POST na server "reCAPTCHA" ověření přijaté odpovědi. Žádost trvá dva parametry, vložené do pole s id subjektu: reCAPTCHA tajný klíč a reakci jsme se ověřování, číst z požadavku parametru g-recaptcha odpovědi.

Server vrátí jeho odpověď jako objekt JSON kódování. Jakmile je dekódovat odpověď, lze použít ke kontrole odpověď, jak to děláme na řádku 29.

Dále použijeme funkci v handle_register_request aby reCAPTCHA zkontrolujte součást ověření parametru. Pro upřesnění, zde je celý... jinak konstrukce s novým kódem připojena ve středu (linky 4-6):

Je-li "reCAPTCHA" Kontrola selže, bude uživatel přesměrován zpět na stránku registrace s captcha kód chyby zahrnout do adresy URL.

Chcete-li zobrazit chybu uživateli, přidejte odpovídající chybovou zprávu ve funkci get_error_message. Něco jako je tento, možná:

A to je vše. Jste přidali "reCAPTCHA" šek do vašeho nového toku registrace uživatele.

Co bude dál?

Jste nyní úspěšně upravili webu WordPress-založené nové uživatele registrace toku. Pokud máte další nápady, co byste chtěli jinak v tomto kroku, to je dobrý čas k rozšíření změny, které jsme dělali v tomto kurzu. Přidat nová pole, proveďte další ověřování, přidejte uživatele do seznamu adresátů. Si jen vzpomenete.

V další a poslední, kurz v tomto seriálu budeme kompletní přizpůsobení tím, že nahradí funkci "Zapomenuté heslo" s naší vlastní vlastní stránky.

Do té doby šťastný kódování.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.