Construiți un flux personalizat de utilizatori WordPress - Partea 2 Înregistrare utilizator nou

În primul tutorial din această serie despre personalizarea experienței de conectare WordPress, am creat un plugin care vă permite să înlocuiți ecranul de conectare WordPress cu o pagină personalizată. Astăzi, vom merge un pas mai departe și vom înlocui noul flux de înregistrare a utilizatorilor în același mod.

Motivele pentru personalizarea paginii de conectare pe care am subliniat-o în Partea 1 (potrivirea paginii de înregistrare cu tema site-ului dvs. pentru a ascunde WordPress și pentru a îmbunătăți experiența utilizatorului) se aplică și în cazul înregistrării utilizatorilor noi, dar există și câteva motive mai specifice pentru motivul pentru care ați putea doriți să vă creați propria pagină de înregistrare:

  • În primul rând, la înregistrare, ați putea dori să modificați câmpurile pe care le cereți de la noii dvs. membri, adăugând câmpuri suplimentare sau poate renunța la unele. De exemplu, în acest tutorial, vom elimina câmpul cu numele de utilizator și, în schimb, vom folosi adresa de e-mail a noului utilizator ca login.
  • În al doilea rând, există spam de înregistrare. Când am deschis înregistrările pentru toată lumea de pe site-ul meu, nu a durat mai mult de câteva ore pentru ca prima înregistrare de spam să apară, următoarea urmând după ea. Adăugarea unui câmp reCAPTCHA pe o pagină de înregistrare personalizată este o modalitate bună de a face față acestei situații, păstrând în același timp experiența utilizatorului.
  • În cele din urmă, ați putea dori să faceți niște acțiuni personalizate la înregistrare, de exemplu adăugarea noului utilizator în lista dvs. de corespondență. După ce ați construit propriul flux de înregistrare, acest lucru va fi mai ușor decât oricând.

Deci, echipat cu acest set de motive, să începem. 

În acest tutorial, veți învăța cum să înlocuiți ecranul de înregistrare WordPress cu o pagină particularizată și să implementați înregistrarea cu propriul cod, fără a încălca principiile de proiectare ale WordPress. 

Funcționalitatea va fi construită pe partea de sus a pluginului pe care l-am construit în Partea 1 a seriei tutorial, deci dacă nu l-ați citit încă, este o idee bună să începeți prin a verifica acest tutorial. Puteți scrie singur codul în timp ce urmați tutorialul sau descărcați codul exemplu din proiectul Github al tutorialului.

Adăugați o pagină de înregistrare nouă pentru utilizatori personalizați

Pagina implicită pentru înregistrarea utilizatorilor WordPress la wp-login.php? action = registru arata asa:

Nu este rău, dar dacă nu executați WordPress.org, este cel mai probabil că nu este în concordanță cu design-ul dvs. de blog sau de site-uri web. 

Notă: Dacă nu puteți accesa pagina de înregistrare pe site-ul dvs. WordPress, aceasta se datorează faptului că, în mod implicit, WordPress nu permite utilizatorilor noi să se înregistreze. Pentru a schimba acest lucru, mergeți la setari generale în tabloul de bord al adminului și bifați caseta de validare înainte de "Oricine se poate înregistra"Apoi salvați setările și reveniți la pagina de înregistrare.

În prima parte a seriei, am creat o pagină personalizată pentru afișarea formularului de autentificare și a unui scurt cod care a fost folosit pentru a plasa formularul de autentificare pe acea pagină. Acum, vom face același lucru pentru înregistrare: mai întâi vom crea un scurtcod pentru afișarea formularului de înregistrare și apoi o pagină pe care va fi plasat acest cod scurt.

De asemenea, este posibil să plasați codul scurt pe o altă pagină sau să aveți formularele de înregistrare și înregistrare pe o singură pagină.

Pasul 1: Creați codul scurt

Bazându-se pe partea de sus a plugin-ului creat în partea 1 a seriei, să începem prin adăugarea unui scurtcod pentru pagina de înregistrare.

La sfârșitul clasei plugin-ului (Personalize_Login_Plugin) Constructor, adăugați următoarea definiție a codului scurt:

add_shortcode ('custom-register-form', array ($ this, 'render_register_form'));

Apoi, creați funcția responsabilă de redarea noului formular de înregistrare a utilizatorului:

/ ** * Un scurtcod pentru redarea noului formular de înregistrare a utilizatorului. * * @param array $ attributes Atribute shortcode. * @ param string $ content Conținutul de text pentru scurtcode. Nefolosit. * * @ string retur Output shortcode * / functie publica render_register_form ($ attributes, $ content = null) // Parse atribute shortcode $ default_attributes = array ('show_title' => false); $ attributes = shortcode_atts ($ default_attributes, $ atribute); if (is_user_logged_in ()) returnați __ ('Sunteți deja conectat (ă)', 'personalize-login');  elseif (! get_option ('users_can_register')) return __ ("Înregistrarea utilizatorilor noi nu este permisă în prezent", "personalize-login");  altceva return $ this-> get_template_html ('register_form', $ attributes); 

Dacă ați citit deja Partea 1 din serie, veți observa o mulțime de asemănări între această funcție și funcția de redare a formularului de autentificare din acel tutorial. 

Mai întâi, pe liniile 10-12, veți observa că codul scurt are un atribut Arata titlul, utilizat pentru a defini dacă un titlu ar trebui să fie redat de codul scurt sau nu.

În al doilea rând, formularul de înregistrare nu este afișat utilizatorilor care sunt deja conectați (linii 14-15). Mesajul returnat în locul formularului este destul de simplu, așa că, în funcție de nevoile dvs., vă recomandăm să înlocuiți acest cod cu ceva mai detaliat - de exemplu un link înapoi spre tabloul de bord. 

Un element nou este verificarea opțiunii WordPress users_can_register pe linia 16. Această opțiune este controlată de WordPress setari generale camp Oricine se poate înregistra menționat mai sus. Pentru a ne asigura că respectăm setările pe care le definește utilizatorul în WordPress, nu ar trebui să afișăm formularul de înregistrare dacă setarea este setată la fals. În schimb, după cum vedeți linia 17, funcția va returna o notificare privind închiderea înregistrării.

Efectuarea efectivă a formularului de înregistrare se face la data de linia 19 folosind un șablon PHP, register_form.php, localizat în template-uri directorul pe care l-am creat în tutorialul anterior. Consultați Partea 1 pentru o explicație mai lungă despre modul în care funcționează acest lucru, precum și codul funcției utilizate, get_template_html.

Acum, să adăugăm șablonul pentru formularul de înregistrare.

Pasul 2: Creați formularul de înregistrare

În template-uri director, adăugați un nou fișier PHP și denumiți-l register_form.php. Apoi, continuați adăugând un formular de înregistrare cu câmpurile pe care doriți să le completeze noul dvs. utilizator.

Iată versiunea pe care am creat-o pentru acest tutorial; un formular de înregistrare mai degrabă standard cu câmpuri pentru e-mail, prenume și nume de familie. Formularul nu conține un câmp separat pentru un nume de utilizator, deoarece adresa de e-mail se va dubla ca una.

La fel ca și înregistrarea implicită a utilizatorilor WordPress, versiunea noastră va genera parola și va trimite un e-mail către noul utilizator. Acest lucru servește ca un simplu e-mail de verificare (utilizatorul nu va putea să vă conectați fără a introduce o adresă de e-mail validă) și impune un anumit nivel de securitate a parolei. 

Desigur, această abordare are propriul risc de securitate sub formă de parole e-mail, așadar este o idee bună să întrebați (sau chiar să solicitați) ca utilizatorul să schimbe parola după ce sa logat.

array (' 'membru-registru' => array ('title' => __ ('Register', 'personalize-login');

Cârligul de activare rulează numai atunci când un plugin este activat, deci mergeți mai departe și dezactivați și apoi activați pluginul de pe Plugin-uri pagină. Acum, când navigați la adresa URL http: /// Membru-registru, ar trebui să vedeți ceva de genul acesta (utilizând tema implicită WordPress curentă), Douăzeci și cincisprezece):

Pasul 4: Redirecționați utilizatorul la noua noastră pagină de înregistrare

Înainte de a trece la executarea acțiunii de înregistrare, asigurați-vă că utilizatorul este întotdeauna redirecționat către această nouă pagină de înregistrare în locul paginii de utilizator implicite noi la wp-login.php? action = registru.

Pentru a face acest lucru, vom folosi cârligul de acțiune login_form_ acțiune care, după cum ați putea aminti din Partea 1, este concediată înainte de fiecare acțiune wp-login.php. După cum vedeți din linkul de mai sus, acțiunea în acest caz este Inregistreaza-te, și așa ne vom angaja funcția login_form_register.

În constructorul pluginului, adăugați următoarea linie:

add_action ('login_form_register', array ($ this, 'redirect_to_custom_register'));

Apoi, creați funcția de apel invers:

/ ** * Redirecționează utilizatorul la pagina de înregistrare personalizată în loc de * din wp-login.php? Action = register. * / funcția publică redirect_to_custom_register () if ('GET' == $ _SERVER ['REQUEST_METHOD']) if (is_user_logged_in ()) $ this-> redirect_logged_in_user ();  altceva wp_redirect (home_url ('member-register'));  Ieșire; 

Pe măsură ce am cuplat funcția la login_form_register acțiune, știm că utilizatorul încearcă fie să acceseze noul formular de înregistrare a utilizatorului, fie să îl trimită.

De aceea primul lucru pe care îl facem în această funcție (pe linia 6) Este de a verifica metoda de solicitare care a fost utilizată pentru a accesa pagina: redirecționarea este efectuată numai OBȚINE cererile ca POST cererea va fi rezervată pentru executarea acțiunii de înregistrare. Mai multe despre asta în curând.

Apoi, funcția continuă verificând dacă utilizatorul este deja conectat (linia 7). 

Utilizatorii conectați sunt redirecționați către pagina contului (sau la tabloul de bord al administratorului, dacă sunt administratori) utilizând funcția redirect_logged_in_user pe care am creat-o în Partea 1. Vizitatorii sunt redirecționați către noua noastră pagină, membru-registru.

Acum, cu pagina și forma în vigoare, să trecem la ceea ce se întâmplă atunci când utilizatorul trimite formularul.

Înregistrați un utilizator nou

Când utilizatorul prezintă noul formular de înregistrare a utilizatorului, conținutul acestuia este trimis la wp-login.php? action = registru, aceeași adresă URL pe care am utilizat-o când redirecționăm utilizatorul la pagina de înregistrare de mai sus. 

Pentru a face personalizările pe care le-am menționat mai devreme (cel mai important fiind utilizarea adresei de e-mail ca nume de utilizator), va trebui să înlocuim această funcție cu propriul cod. Pentru aceasta, vom crea mai întâi o funcție pentru înregistrarea programată a unui nou utilizator și apoi vom apela această funcție într-un handler de acțiune.

Pasul 1: Creați utilizatorul

Să începem prin crearea unei funcții care să poată fi utilizată pentru a înregistra un nou utilizator utilizând datele colectate din formularul de mai sus: adresa de e-mail, prenumele și numele de familie. Adresa de e-mail va fi singurul identificator unic, iar restul este doar ceva frumos de făcut.

În clasa plugin-ului, adăugați următoarea funcție privată:

/ ** * Validă și apoi completează noul proces de înscriere a utilizatorilor dacă totul a mers bine. * * @param string $ email Adresa de email a noului utilizator * @param string $ first_name Numele noului utilizator * @param string $ last_name Numele de familie al noului utilizator * * @return int | WP_Error ID-ul utilizatorului care a fost creat, sau eroare dacă nu a reușit. * / funcția privată register_user ($ email, $ first_name, $ last_name) $ errors = new WP_Error (); // Adresa de e-mail este utilizată atât ca nume de utilizator, cât și ca e-mail. Este, de asemenea, singurul // parametru care trebuie validat dacă (! Is_email ($ email)) $ errors-> add ('email', $ this-> get_error_message ('email')); returneaza $ erori;  dacă (username_exists ($ email) || email_exists ($ email)) $ errors-> add ('email_exists', $ this-> get_error_message ('email_exists')); returneaza $ erori;  // Generați parola astfel încât abonatul va trebui să verifice e-mailul ... $ password = wp_generate_password (12, false); $ user_data = array ('user_data = array (' user_login '=> email,' user_email '=> $ email,' user_pass '=> $ password,' first_name '=> $ first_name,' last_name ' $ first_name,); $ user_id = wp_insert_user ($ user_data); wp_new_user_notification ($ user_id, $ password); returnați $ user_id; 

După cum am menționat mai sus, adresa de e-mail este singurul identificator unic și, de asemenea, singurul parametru necesar. De aceea începem funcția prin validarea valorii sale. Mai întâi linia 15, validăm adresa de e-mail și apoi, pe linia 20 verificăm că adresa de e-mail nu este deja utilizată. Dacă una dintre validări nu reușește, a Wp_Error obiectul este returnat. Vom reveni la afișarea acestor erori în curând.

Dacă totul merge bine și nu se găsesc erori, funcția continuă prin generarea unei parole linia 26.

Pe linii 28-37, veți găsi nucleul acestei funcții, crearea noului utilizator. Utilizatorul este adăugat utilizând funcția WordPress wp_insert_user. (linia 37). Ca parametru unic, funcția are o matrice asociativă cu informații despre utilizatorul creat. După cum veți vedea linii 28-35, folosim $ e-mail atât pentru numele de utilizator (logare utilizator) și e-mail (e-mail) câmpuri. Pentru o listă completă a câmpurilor care pot fi incluse în matricea atributelor, aruncați o privire la codul WordPress.

După crearea utilizatorului, pornit linia 38, apelurile pentru funcții wp_new_user_notification pentru a trimite parola generată noului utilizator și pentru a anunța administratorul site-ului noului utilizator. 

Pasul 2: Apelați codul de înregistrare când un utilizator trimite formularul

Acum, că am scris codul pentru înregistrarea utilizatorului, îl putem apela când este trimis formularul de înregistrare.

Anterior, când am adăugat redirecționarea către pagina noastră de înregistrare personalizată, folosind acțiunea login_form_register, Am menționat că vom folosi aceeași acțiune și pentru manipularea POST cereri.

Așa cum se întâmplă adesea în programare, acest lucru nu este singurul mod în care ne putem ocupa de noua înregistrare a utilizatorilor, dar are un beneficiu destul de important: în acest fel, vom asigura că nimeni nu poate accesa în mod accidental codul de înregistrare implicit în WordPress.

Pentru claritate, să adăugăm o funcție separată și să o legăm la aceeași acțiune (din punct de vedere tehnic, nu există niciun motiv pentru care nu puteți adăuga acest cod la funcția de redirecționare pe care am creat-o mai sus). 

În constructorul clasei pluginului, adăugați o nouă definiție a acțiunii:

add_action ('login_form_register', array ($ this, 'do_register_user'));

Apoi, creați funcția:

/ ** * se ocupă de înregistrarea unui nou utilizator. * * Utilizat prin cârligul de acțiune "login_form_register" activat pe wp-login.php * când este accesat prin intermediul acțiunii de înregistrare. * / funcția publică do_register_user () if ('POST' == $ _SERVER ['REQUEST_METHOD']) $ redirect_url = home_url ("membru-registru"); dacă ! get_option ('users_can_register')) // Înregistrare închisă, eroare de afișare $ redirect_url = add_query_arg ('register-errors', 'closed', $ redirect_url);  altceva $ email = $ _POST ['email']; $ first_name = sanitize_text_field ($ _POST ['first_name']); $ last_name = sanitize_text_field ($ _POST ['last_name']); $ result = $ this-> register_user ($ email, $ first_name, $ last_name); if (is_wp_error ($ result)) // Parsează erorile într-un șir și adaugă ca parametru pentru a redirecționa $ errors = join (',', $ result-> get_error_codes ()); $ redirect_url = add_query_arg ("eroare de înregistrare", $ erori, $ redirect_url);  altceva // Succes, redirecționați la pagina de conectare. $ redirect_url = home_url ("membru-login"); $ redirect_url = add_query_arg ("înregistrat", $ email, $ redirect_url);  wp_redirect ($ redirect_url); Ieșire; 

Funcția începe cu o verificare a metodei de solicitare linia 8: funcția este legată de acțiunea WordPress login_form_register, același lucru pe care l-am utilizat pentru redirecționarea utilizatorului, iar metoda de solicitare este ceea ce diferențiază cele două utilizări una de cealaltă.

Pe linia 11, verificăm că este permisă înregistrarea utilizatorilor noi. Dacă nu, utilizatorul este redirecționat înapoi la pagina de înregistrare cu un cod de eroare (închis) ca parametru de interogare (register-erori).

Pe de altă parte, dacă înregistrarea este deschisă, funcția colectează parametrii necesari (linii 15-17) Din datele solicitate și le folosește pentru a apela funcția pe care am creat-o mai sus (linia 19) pentru a crea noul utilizator.

După register_user apel, funcția redirecționează utilizatorul la locul corect, în funcție de faptul că noua înregistrare a utilizatorului a avut succes sau nu: 

  • După o redirecționare reușită, utilizatorul este redirecționat către pagina de conectare, cu parametrul $ înregistrat indicând faptul că un nou utilizator a fost creat. 
  • În cazul unei erori, redirecționarea indică înapoi la formularul de înregistrare, iar codurile de eroare de la noua funcție de înregistrare a utilizatorilor sunt combinate într-o listă separată prin virgulă și incluse în cerere (liniile 23-24).

Pasul 3: Afișați erori și mesaje de succes

Așa cum am văzut mai sus, funcția de înregistrare redirecționează utilizatorul la pagina de conectare dacă înregistrarea a avut succes și înapoi la pagina de înregistrare în cazul în care au existat erori, cu statusul trecut ca parametru de cerere.

Acum, să adăugăm un anumit cod pentru a afișa acele mesaje utilizatorului, începând cu mesajele de eroare de pe noua pagină de înregistrare a utilizatorilor.

În render_register_form, adăugați următoarea bucată de cod chiar înainte de redarea șablonului:

// Returnați eventualele erori din parametrii de solicitare $ attributes ['errors'] = array (); dacă (isset ($ _REQUEST ['register-errors'])) $ error_codes = explode (',', $ _REQUEST ['registru-erori']); foreach ($ error_codes ca $ error_code) $ atribute ['erori'] [] = $ this-> get_error_message ($ error_code); 

Acest fragment verifică mai întâi dacă au fost transmise erori în parametrul de solicitare register-erori (randul 2). Dacă da, trece prin toate, cautând mesaje de eroare corespunzătoare folosind get_error_message funcția pe care am creat-o în Partea 1 a seriei tutorial. 

Mesajele de eroare sunt colectate într - o matrice din atributele $ matrice pentru imprimarea în șablon.

Pentru a putea afișa mesajele de eroare corecte, va trebui să adăugăm și noi mesaje de eroare la această funcție get_error_message. În structura comutatorului, adăugați aceste mesaje de eroare (sau proprii):

// În cazul în care se înregistrează erori de e-mail, reveniți __ ("Adresa de e-mail pe care ați introdus-o nu este validă", "personalize-login"); cazul 'email_exists': return __ ('Un cont există cu această adresă de e-mail.', 'personalize-login'); cazul "închis": întoarcere __ ("Înregistrarea noilor utilizatori nu este permisă în prezent", "personalize-login");

Pentru a afișa erorile pe pagina de înregistrare, adăugați următorul cod în register_form.php șablon între titlul și forma:

 0): a>  

Apoi, să adăugăm mesajul de succes.

Când un nou utilizator a fost înregistrat cu succes, utilizatorul este redirecționat către pagina de conectare, cu un parametru, înregistrat = adresa de e-mail atașat la adresa URL. 

În funcție render_login_form, adăugați următoarele două linii pentru a verifica dacă parametrul este prezent:

// Verificați dacă utilizatorul tocmai a înregistrat atributele $ ['registered]] = isset ($ _REQUEST [' registered ']);

Apoi, în șablon login_form.php, adăugați un mesaj care va fi afișat dacă înregistrat steagul este setat:

 

% s. V-am trimis prin e-mail parola la adresa de e-mail pe care ați introdus-o. ',' Personalize-login '), get_bloginfo (' name ')); ?>

Asta e. Ați construit acum un nou flux complet de înregistrare a utilizatorilor cu validarea parametrilor și raportarea erorilor. 

Mergeți înainte în crearea unui nou cont de utilizator pentru a testa fluxul.

Dacă testați plugin-ul pe un server local, cu excepția cazului în care ați configurat setările de e-mail, este posibil să nu primiți e-mailul care conține parola - este normal.

Luptă înregistrarea spam cu Google ReCaptcha

În timp ce formularul de înregistrare este acum complet, vom continua să-l personalizăm mai mult prin adăugarea unei cecuri reCAPTCHA (căsuța "Nu sunt un robot" pe care o veți găsi pe multe site-uri mai mari online) pentru a împiedica înregistrarea spam-urilor de la crearea conturilor pe site-ul dvs. web.

Pasul 1: Obțineți cheia dvs. Captcha

Mai întâi, vizitați site-ul reCAPTCHA. Faceți clic pe "Obțineți reCAPTCHA"din colțul din dreapta sus pentru a accesa pagina de administrare reCAPTCHA.

Dacă nu sunteți conectat (ă) la Contul dvs. Google, vi se va solicita să vă conectați. Dacă nu aveți încă unul, va trebui să creați unul pentru a utiliza acest instrument. 

Pe pagina contului reCAPTCHA, veți găsi formularul următor. Utilizați-l pentru a introduce informații despre site-ul dvs. web. 

Odată ce ați trimis formularul făcând clic pe Inregistreaza-te, veți vedea o pagină cu instrucțiuni privind activarea reCAPTCHA pe site-ul dvs., precum și două chei utilizate pentru utilizarea API-ului: Cheia site-ului și Cheie secreta.

Pentru a stoca cheile în pluginul nostru WordPress, va trebui să creați două câmpuri de setări. Pentru a păstra lucrurile simple, le vom adăuga la setari generale și nu creați încă o pagină de setări personalizate.

Pentru a adăuga câmpurile de setări, mai întâi creează o acțiune nouă. În constructorul pluginului, adăugați următoarea linie nouă:

add_filter ('admin_init', array ($ this, 'register_settings_fields'));

Apoi, creați funcția de definire a câmpurilor de setări și a celor două funcții de redirecționare pentru redarea câmpurilor de setări:

/ ** * Înregistrează câmpurile de setări necesare pluginului. * / public function register_settings_fields () // Creeaza campuri de setare pentru cele doua chei folosite de reCAPTCHA register_setting ('general', 'personalize-login-recaptcha-key-site'); register_setting ('general', 'personalize-login-recaptcha-secret-key'); add_settings_field ('personalize-login-recaptcha-site-key', '', array ($ this,' render_recaptcha_site_key_field '),' general '); add_settings_field ('personalize-login-recaptcha-secret-key', '', array ($ this,' render_recaptcha_secret_key_field '),' general ');  funcția publică render_recaptcha_site_key_field () $ value = get_option ('personalize-login-recaptcha-site-key'„;  funcția publică render_recaptcha_secret_key_field () $ value = get_option ('personalize-login-recaptcha-secret-key'„; 

Deoarece acest tutorial nu se referă la API-urile de setări WordPress, nu vom trece prin declarația câmpului de setări. Dacă nu sunteți familiarizat cu modul în care funcționează adăugarea setărilor în WordPress, consultați această serie completă de tutori de Tom McFarlin.

Acum, du-te la setari generale și copiați tastele reCAPTCHA în cele două câmpuri pe care tocmai le-ați creat și salvați setările.

Pasul 2: Afișați CAPTCHA

Odată cu pregătirile făcute, putem adăuga câmpul reCAPTCHA și îl putem folosi pentru a verifica dacă utilizatorii noștri sunt umani.

În render_registration_form, citiți mai întâi cheia de site reCAPTCHA din setările WordPress și păstrați-o în atributele $ pentru a fi disponibilă în șablon:

// Recupera cheie recaptcha $ atribute ['recaptcha_site_key'] = get_option ('personalize-login-recaptcha-site-key', null);

Apoi, utilizând parametrul, adăugați un substituent pentru câmpul reCAPTCHA în formularul de înregistrare, chiar deasupra butonului de trimitere:

 
";

Acum, când te duci la pagina de înregistrare, ar trebui să vezi câmpul reCAPTCHA în loc:

Pasul 3: Verificați CAPTCHA

Dacă verificarea "nu este un robot" bazată pe JavaScript are succes, widgetul reCAPTCHA adaugă un nou parametru formularului, g-reCAPTCHA-răspuns. Apoi, în validările din partea serverului în do_register_user , putem folosi parametrul pentru a verifica dacă utilizatorul a trecut testul.

Mai întâi, să creăm o funcție pentru verificarea parametrului reCAPTCHA:

/ ** * Verifică dacă parametrul reCAPTCHA trimis cu cererea de înregistrare * este valabil. * * @return bool Adevărat dacă CAPTCHA este OK, altfel fals. * / funcția privată verify_recaptcha () // Acest câmp este setat de widgetul recaptcha dacă verificarea este reușită dacă (isset ($ _POST ['g-recaptcha-response'])) $ captcha_response = $ _POST ['g-recaptcha -raspuns'];  altfel return false;  // Verificați răspunsul captcha de la Google $ answer = wp_remote_post ('https://www.google.com/recaptcha/api/siteverify', array ('body' => array ('secret' => get_option -login-recaptcha-secret-cheie '),' răspuns '=> $ captcha_response))); $ success = false; dacă ($ response && este_array ($ răspuns)) $ decoded_response = json_decode ($ răspuns ['body']); $ success = $ decoded_response-> success;  return $ success; 

Pe linii 9-13, funcția preia răspunsul reCAPTCHA. Dacă nu este găsit, utilizatorul nu a încercat nici măcar să finalizeze testul înainte de a trimite formularul.

Apoi linii 16-24, funcția folosește wp_remote_post pentru a trimite un mesaj POST solicitați serverului reCAPTCHA să verifice răspunsul primit. Cererea are doi parametri, încorporați într-un matrice cu id-ul corp: cheia secretă reCAPTCHA și răspunsul pe care îl validăm, citiți din parametrul de solicitare g-reCAPTCHA-răspuns.

Serverul returnează răspunsul ca obiect JSON codat. Odată ce răspunsul este decodificat, acesta poate fi folosit pentru a ver

Cod