Cum să lucrați cu metadatele utilizatorului WordPress

În articolul anterior, am discutat despre lucrul cu metadatele postate în WordPress utilizând API-urile furnizate. De asemenea, am abordat o varietate de instrumente, ideile de securitate și ceea ce ar fi necesar pentru a crea mediul în care să lucrăm cu codul care ar fi furnizat în tutorial.

Dacă nu ați citit acel articol, atunci recomandăm să îl revizuiți nu numai pentru că acoperă modul de lucru cu metadatele post, ci și pentru că atinge câteva subiecte importante care sunt relevante pentru restul articolelor din această serie (și se face aluzie la unii care urmează să vină mai târziu în acest an).

Presupunând că sunteți toți prinși și pregătiți să aflați despre un alt API de metadate, atunci începeți cu API-ul WordPress User Meta.

Aplicația WordPress Meta API

Reamintim din mai devreme în această serie, WordPress definește metadatele în felul următor:

Meta-datele sunt manipulate cu perechi cheie / valoare. Cheia este numele elementului metadata. Valoarea reprezintă informațiile care vor apărea în lista metadatelor pentru fiecare post individual la care sunt asociate informațiile.

Pe măsură ce vom continua să lucrăm cu diferitele API-uri de metadate, veți descoperi că această definiție este valabilă indiferent de ce API este explorat.

Cel mai frumos lucru este că, odată ce te-ai ocupat de abordarea unui API pentru metadate, ai o idee generală despre modul în care fiecare dintre API-urile aferente va funcționa. Sigur, pot exista nuanțe aici și acolo, dar funcționalitatea generală va fi aceeași.

Lucrul cu API Metadata utilizator

Când am privit API-ul WordPress Post Meta, am analizat și am utilizat următoarele funcții:

  • add_post_meta
  • update_post_meta
  • get_post_meta
  • delete_post_meta

Da, există între acestea idiosincrazii, mai ales că se referă la cum add_post_meta și update_post_meta munca și diferitele moduri get_post_meta și delete_post_meta și API-urile pe care urmează să le examinăm vor funcționa mult în același mod.

Pentru restul acestui articol, presupun că aveți un server web local, acces la un front-end de baze de date, un IDE și că sunteți confortabil să lucrați cu fișierul tutsplus-metadata.php.

Dacă sunteți curios, voi folosi următorul set de instrumente:

  • MAMP
  • Atom
  • Sequel Pro
  • două mii șaisprezece

Rețineți că metadatele utilizatorului vor fi stocate în wp_usermeta tabelul de baze de date, deci vom face referire la aceasta în orice capturi de ecran ale bazei de date. Spre deosebire de tabela inițială de metadate postate, există deja date deja în tabelul metadatelor utilizatorilor.

Acest lucru se datorează faptului că unele date sunt stocate pe ecranul profilului de utilizator:

Cu toate acestea, API ne va permite să ne scriem propriile informații la masă. Deci, cu toate acestea a spus, să mergem mai departe și să aruncăm o privire la modul de a lucra cu funcțiile oferite de WordPress.

Rețineți că, prin toate exemplele date, vom trece 1 pentru primul parametru pentru funcțiile API, deoarece primul utilizator este întotdeauna administratorul site-ului. În general, acest lucru este garantat pentru a exista în orice instalație dată.

Adăugarea Meta utilizatorului

Puteți găsi o referință la add_user_meta în Codul. Definiția funcției este cât se poate de succintă:

Adăugați metadate în înregistrarea unui utilizator.

Cât de benefică este aceasta? Aceasta înseamnă că, dacă lucrați la un plugin sau la o aplicație web construită pe WordPress și doriți să extindeți ceea ce o persoană poate să se asocieze cu profilul său, atunci acesta este un mod de a face acest lucru.

Ar putea fi ceva la fel de simplu ca și furnizarea unui profil al unui utilizator într-o anumită rețea socială sau ar putea fi ceva mai avansat acolo unde este posibil să asociați utilizatorul cu datele conținute într-un alt tabel, o serie de informații sau altceva.

Indiferent, acesta este modul în care faceți asta. Iată ce este cazul: Amintiți-vă cum puteți scrie metadate pentru o postare utilizând add_post_meta Această funcție a dus la scrierea mai multor rânduri utilizând aceeași cheie?

Același lucru este posibil folosind add_user_meta. Cu toate acestea, funcția API acceptă un al patrulea parametru opțional dacă o valoare introdusă trebuie să fie unică sau nu.

Valori non-unice

Deci, mai întâi, să aruncăm o privire asupra codului pentru adăugarea unor metadate de utilizator și să facem acest lucru prin faptul că nu specificăm că acesta ar trebui să fie unic.

Codul pentru acest lucru va arăta astfel:

Rețineți că folosim aceeași strategie ca cea utilizată anterior în această serie:

  1. Ne-am prins continutul.
  2. Verificăm să vedem dacă suntem pe Salut Lume post.
  3. Dacă da, adăugăm metadatele utilizatorului.
  4. Ne intoarcem conținut $ la WordPress.

Cu acest cod în loc și cu Salut Lume post încărcat în browserul dvs., reîmprospătați pagina de câteva ori.

Odată terminat, tabela de baze de date rezultate va arăta astfel:

Așa cum am spus, este foarte asemănător cu modul în care API-ul metadate post performează.

Valori unice

Folosind front-end-ul bazei de date, ștergeți rândurile care au fost create sau nu ezitați să alegeți o cheie nouă (poate ceva de genul instagram_username). Voi șterge rândurile.

În al doilea rând, voi crea, de asemenea, oa doua funcție, mai degrabă decât schimbând cea de mai sus, astfel încât să pot oferi codul sursă complet la sfârșitul tutorialului, deci citiți cu atenție următorul cod:

Mai întâi, furnizați o valoare unică pentru valoarea meta (sau pentru al treilea argument) în apelul pentru funcții. Actualizați pagina de câteva ori, apoi aruncați o privire la baza de date. Ar trebui să arate ceva de genul:

Observați ce este interesant? Există încă valori multiple, dar ele sunt la fel.

Încercați acum să modificați de câteva ori argumentul valorii meta și apoi să aruncați o privire la baza de date și ar trebui să vedeți ceva de genul:

Observați diferența? Exact - nu există unul. Asta pentru că am spus că nu poate exista decât o cheie unică. Deci, nu înseamnă neapărat că este creată o singură înregistrare. Aceasta înseamnă că mai multe înregistrări vor fi create atunci când funcția este apelată, dar va folosi întotdeauna prima valoare pe care o stochează asociată cu cheia menționată.

Dacă doriți, mergeți mai departe și ștergeți rândurile pe care tocmai le-am creat deoarece acestea oferă o mare siguranță în următoarea funcție.

Actualizarea Meta utilizatorului

În mod similar modului în care funcționează Post Meta API, funcția de actualizare funcționează în felul următor:

Actualizați câmpul meta de utilizator pe baza codului de utilizator. Utilizați parametrul $ prev_value pentru a face diferența între câmpurile meta cu aceeași cheie și ID-ul utilizatorului. Dacă câmpul meta pentru utilizator nu există, acesta va fi adăugat.

Când lucrați cu această funcție, vă ajută să vă gândiți la acest lucru în două scenarii:

  1. când au fost adăugate metadate anterioare utilizând add_user_meta și există mai multe înregistrări cu aceleași informații
  2. când nu s-au adăugat metadate și adăugăm o înregistrare nouă și dorim ca aceasta să fie unică

În primul caz, ajută la furnizarea $ prev_value pentru că îi spui WordPress care valoare trebuie țintită și actualizată. 

Când am adăugat metadatele

De exemplu, presupunem că baza noastră de date pare a fi la fel ca în tutorial:

Și vrem să actualizăm înregistrările care au valoarea anterioară de https://twitter.com/tommcfarlin/. Pentru a face acest lucru, vom actualiza codul care arată astfel.

Apoi, actualizarea bazei de date ar arăta astfel:

Rețineți că acest lucru este actualizat toate valori asociate cu această cheie meta. Desigur, aceasta este o singură utilizare a funcției.

Când adăugați metadate noi

În cel de-al doilea caz, nu va trebui să specificați o valoare anterioară, deoarece veți adăuga informații pentru prima dată. 

Pentru a clarifica, puteți utiliza update_user_meta atunci când doriți să adăugați informații în baza de date. Nu trebuie să existe înainte de ao folosi.

Acest lucru este util ori de câte ori doriți să adăugați o singură înregistrare unică care încă nu a fost adăugată la baza de date. Utilizarea funcției este simplă. Să presupunem că vrem să salvăm numele fratelui utilizatorului.

În acest caz, am face acest lucru:

Acest lucru are ca rezultat înregistrarea următoarei înregistrări în baza de date:

Dacă actualizați pagina de mai multe ori și apoi verificați tabelul bazei de date, veți observa că este scris numai o singură instanță a valorii față de mai multe valori care apar atunci când se utilizează add_user_meta.

Apoi, dacă vrem să schimbăm vreodată această valoare, vom actualiza valoarea meta asociată meta-cheie specificată și ar actualiza acea singură înregistrare.

Recuperarea metad. Utilizatorului

Când vine vorba de preluarea metadatelor utilizatorilor, avem get_user_meta funcţie. În acest moment, ar trebui să fie clar că parametrii așteptați vor fi ID-ul utilizatorului și cheia meta. 

Dar cum rămâne cu valoarea meta?

Amintiți-vă când preluăm informații, avem nevoie doar de ID-ul de utilizator și de cheia meta, deoarece acestea sunt informațiile de identificare pentru o anumită valoare. 

Dar ce se întâmplă dacă dezvoltatorul are mai multe înregistrări pentru o singură cheie? Mai exact, dacă se utilizează add_user_meta cum am făcut mai sus și avem mai multe înregistrări?

Aici intră în joc cel de-al patrulea parametru opțional: o valoare booleană specificată dacă vrem să preluăm o singură valoare sau o serie de valori. Valoarea implicită (cea care a trecut dacă nu este specificată) este fals așa că întotdeauna vom reveni la o matrice dacă nu specificăm altceva.

Preluarea tuturor înregistrărilor

Să presupunem că lucrăm la același set de date de la începutul tutorialului. Asta înseamnă că avem mai multe intrări pentru contul de utilizator al unui utilizator Twitter. Amintiți-vă că baza de date a arătat astfel:

Pentru a obține toate aceste informații din baza de date și afișate pe ecran, vom folosi următorul cod:

Presupunând că totul a mers bine, atunci ar trebui să vezi ceva de genul ăsta în partea superioară a tău Salut Lume post:

Șirul (32) "https://twitter.com/tommcfarlin/" [1] => string (32) "https://twitter.com/tommcfarlin/" [2] => 32) "https://twitter.com/tommcfarlin/" [3] => șir (32) "https://twitter.com/tommcfarlin/"

Dacă nu, verificați dublu apelul la var_dump pe care l-ați făcut și asigurați-vă că informațiile respective este în baza de date pregătită pentru a fi preluată.

Preluarea unei înregistrări unice

În cazul în care doriți să preluați o singură înregistrare, puteți trece drept adevărat ca parametru final al funcției. Aceasta va prelua prima înregistrare care a fost creată în format de șir.

Și rezultatul acestui cod va tipări acest lucru în partea de sus a Salut Lume post din care lucram:

https://twitter.com/tommcfarlin/

Rețineți că, dacă utilizați update_user_meta si tu nu face specifica Adevărat ca parametru final, veți obține o matrice cu un singur indice înmânată înapoi. 

array (1) [0] => șir (32) "https://twitter.com/tommcfarlin/"

Astfel, dacă căutați o reprezentare de șir de informații, treceți întotdeauna Adevărat.

Ștergerea Meta utilizatorului

Ultimul lucru pe care trebuie să-l acoperim este cum să ștergem datele pe care le-am scris în baza de date. Dacă ați urmat împreună cu această serie până acum, probabil că veți dezvolta un fel de intuiție cu privire la modul în care va funcționa această funcție particulară.

Din pagina de codex care o însoțește:

Eliminați criteriile de potrivire a metadatelor de la un utilizator. Puteți să vă potriviți pe baza cheii sau a tastei și a valorii. Eliminarea bazată pe cheie și valoare va împiedica eliminarea metadatelor duplicate cu aceeași cheie. De asemenea, permite ștergerea tuturor cheilor de potrivire a metadatelor, dacă este necesar.

Rețineți că această funcție este proiectată să funcționeze în cazul în care există mai multe înregistrări care există și doriți să le ștergeți toate sau când aveți o singură înregistrare care există și doriți să o eliminați.

Ștergerea mai multor înregistrări

În primul rând, vom examina modul în care se utilizează această funcție atunci când există mai multe înregistrări cu aceleași informații. Să presupunem că, în scopul prezentului exemplu, baza de date pare ceva de genul:

Aici avem mai multe înregistrări. Pentru a șterge înregistrări care au aceeași cheie, folosim un singur apel la delete_user_meta funcția și să treacă ID-ul utilizatorului și tasta meta.

Și dacă actualizați informațiile din tabelul bazei de date, veți observa că toate înregistrările au fost șterse:

Deși aceasta este o funcție ușor de folosit, este important să rețineți că poate șterge mai multe rânduri într-un singur apel, deci folosiți-l cu grijă.

O înregistrare unică

Dacă, pe de altă parte, aveți o singură înregistrare pentru a șterge, atunci aveți nevoie de trei informații:

  1. ID-ul utilizatorului
  2. cheia meta
  3. valoarea meta

Toate cele trei valori vă vor permite să ștergeți o singură înregistrare. În mod clar, permite o mult mai mare precizie decât utilizarea anterioară a acestei funcții. 

Deci, în exemplul nostru, să spunem că avem două înregistrări, ambele având twitter_account meta-cheie. Fiecare cheie are următoarea valoare:

  1. https://twitter.com/tommcfarlin
  2. https://twitter.com/pressware

În exemplul nostru, suntem doar preocupați de eliminarea celei de-a doua valori. Pentru aceasta, vom folosi următorul cod:

Și apoi, dacă actualizați baza de date, ar trebui să vedeți următoarele (sau ceva similar):

Este frumos atunci când un API funcționează exact așa cum vă așteptați.

Codul sursă complet

Iată o copie a întregului cod sursă pe care l-am abordat în acest articol. Rețineți că ADD_ACTION apelurile au fost comentate, deoarece va trebui să le dezactivați pe baza a ceea ce doriți să faceți atunci când experimentați codul.

În plus, nu ezitați să adăugați acest lucru la fișierul pe care l-am creat în tutorialul anterior. Așa am făcut când am lucrat la exemple; cu toate acestea, poate doriți să fiți atenți atunci când lucrați la dosar, astfel încât buna ADD_ACTION apelurile sunt stabilite pe baza a ceea ce doriți să faceți.

Concluzie

După cum sa menționat mai devreme în articol, puteți examina fiecare dintre funcțiile din Codul WordPress, care ar trebui să fie întotdeauna un clic distanță pentru un dezvoltator WordPress.

În ultimul articol din această serie, vom analiza modul de abordare a metadatelor de comentarii. Având în vedere ceea ce am învățat până acum, ar trebui să fie ceva ușor de înțeles. 

Desigur, acest lucru ne lasă în continuare metadate legate de taxonomii. Din cauza naturii taxonomiilor, a termenilor și a API-urilor, vom examina cele din seriile de urmărire.

Pentru moment, continuați să experimentați codul care a fost furnizat în acest articol. Amintiți-vă că este destinat numai scopurilor demonstrative și nu trebuie să fie rulat într-un mediu de producție.

De-a lungul acestei serii, încercăm să punem bazele dezvoltatorilor viitori WordPress care să se construiască de la momentul în care avansează și să lucreze la soluții pentru angajatorul lor, clienții lor sau pentru propriile lor proiecte.

Cu asta am spus că aștept cu nerăbdare continuarea acestei serii. Amintiți-vă dacă sunteți doar începutul, puteți verifica seria mea cu privire la modul de a începe cu WordPress, care se concentrează pe teme specifice pentru începători WordPress.

Între timp, dacă sunteți în căutarea pentru alte utilități pentru a vă ajuta să construi setul tot mai mare de instrumente pentru WordPress sau de cod pentru a studia și de a deveni mai bine versat în WordPress, nu uitați să vedem ce avem la dispoziție în Envato Piaţă.

În cele din urmă, puteți vedea toate cursurile mele și tutoriale pe pagina mea de profil, și puteți citi mai multe articole despre WordPress și WordPress de dezvoltare pe blog-ul meu. Simțiți-vă liber să urmați-mi pe Twitter, precum și la @tommcfarlin unde vorbesc despre diferite practici de dezvoltare software și modul în care le putem angaja în WordPress.

Nu ezitați să lăsați orice întrebări sau comentarii în feed-ul de mai jos și mă voi adresa fiecăruia.

Resurse

  • câmpuri customizate
  • add_user_meta
  • update_user_meta
  • get_user_meta
  • delete_user_meta
  • ecou
  • var_dump
Cod