Masterat WordPress Meta Date înțelegerea și utilizarea matricelor

În prima parte a acestei serii am analizat ce metadate WordPress sunt, cum pot fi preluate și diferitele tipuri de date (cum ar fi obiecte sau tablouri) în care pot fi returnate. Acum este timpul să învățați despre diferitele tipuri de matrice.

Atunci când scrieți o matrice manuală, știți care este structura acesteia și care este numele fiecărui index. Dar, atunci când construiți array-uri prin interogarea unei baze de date, va trebui să faceți o lucrare de detectiv pentru a determina structura datelor returnate și numele indiciilor.

Tipuri de array

Înainte de a sări efectiv în diferitele tipuri de array disponibile, este important să înțelegeți că o matrice PHP este orice variabilă care conține mai mult de o singură bucată de date.

Asociative versus matrice indexate

Cel mai simplu exemplu de matrice este o listă de valori separate prin virgulă, în interiorul funcției array (), asa:

 $ heros = matrice ("Luke", "Leia", "Han");

PHP indexează automat tablourile create în listele separate prin virgule, atribuind fiecărui element un index numeric, începând de la zero. Aceasta înseamnă că am putea recupera valoarea celui de-al doilea element "Leia" din $ eroi arătând indexul 1.

Iata ce ar arata:

 $ heroes = array ("Luke", "Leia", "Han"); echo $ eroi [1];

Pentru un exemplu practic WordPress, aruncați o privire la funcția wp_get_attachment_image_src () care returnează o matrice indexată de informații despre o imagine.

Putem obține URL-ul, lățimea și înălțimea unei imagini utilizând indexurile numerice din matricea pe care această funcție o returnează (rețineți că "7" fiind trecut la funcție se referă la ID-ul atașamentului, și în acest caz este arbitrar în scopul exemplul nostru):

 $ img = wp_get_attachment_image_src (7); echo "";

Desigur, urmărirea numerelor index în matrice poate deveni confuză, motiv pentru care PHP ne permite să creăm matrice asociative. Revenind la serviciul nostru $ eroi exemplu, am putea da fiecărui element din matricea noastră un nume:

 $ heroes = array ('unlikely_hero' => 'Luke', 'badass_princess' => 'Leia', 'lovable_rouge' => 'Han';);

Noi numim aceste nume chei. În această matrice, am spune că cheia "unlikely_hero" are valoarea "Luke". Putem obține valoarea acestei chei prin plasarea acesteia în paranteze de lângă variabilă. De exemplu:

 echo $ hereos ['unlikely_hero'];

Multiple dimensiuni

Până acum, ne-am uitat la tablouri care sunt, în esență, o listă de elemente, dar tablourile pot fi alcătuite și din alte tablouri. Noi numim aceste matrice multidimensionale. Atunci când creăm o matrice multidimensională, avem în esență o listă de liste, în care fiecare index sau cheie din matricea noastră este definită de un alt tablou.

De exemplu:

 $ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => ('full_name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess' home_planet '=>' Corell ',' trope '=>' Lovable Rouge '),);

Acest tip de matrice este foarte util, deoarece ne permite să ne bifăm, să scriem marcarea noastră o dată și să lăsăm PHP să o repete de mai multe ori.

Instrumente de lucru pentru detectivi

Așa cum am spus la începutul acestui articol, lucrul cu meta date poate implica deseori o activitate de detectiv pentru a descoperi structura matricei. Ca orice detectiv, trebuie să vă asigurați că aveți instrumentele potrivite pentru slujbă.

Dezvoltatorii amatori își modifică temporar fișierele tematice la valorile de ieșire ale matricelor. Dar dacă vrei să lucrezi rapid și eficient, o vei face pro-cale - cu consola de depanare.

Dezvoltatorii amatori își modifică temporar fișierele tematice la valorile de ieșire ale matricelor. Dar dacă vrei să lucrezi rapid și eficient, o vei face pro-cale - cu consola de depanare.

Ce este Consola de depanare?

Consola de depanare este una dintre mai multe extensii pentru pluginul Debug Bar, pe care nici un dezvoltator WordPress nu ar trebui să-l prezinte. Dacă nu aveți deja instalat Debug Bar în mediul de dezvoltare, trebuie să faceți acest lucru cât mai curând posibil.

Odată ce ați instalat aceste două pluginuri, veți putea accesa o consolă din bara de administrare, unde puteți rula cod PHP. Acum, în loc să modificați un fișier de temă, salvați și actualizați, puteți pur și simplu să experimentați codul în browser.

Doar faceți clic pe "alerga" și vedeți rezultatele din partea de jos a ecranului. Cea mai bună parte este că orice eroare pe care o generați va apărea în caseta de rezultate, nu pe front-ul site-urilor dvs. Eroare fatală sparge consola de depanare, nu site-ul dvs..

Doar am zgâriat suprafața a ceea ce poate face Debug Bar, apropo. De asemenea, ambele bare de depanare și consolă de depanare, precum și o multitudine de utilități cool sunt incluse în Plug-in-ul pentru dezvoltatori, pe care îl recomand. Pe măsură ce învățați să lucrați cu meta date, puteți găsi pluginul Debug Bar Post Meta destul de util.

var_dump vs print_r

Acum, că aveți un loc pentru a vă face testarea cum explorați interiorul unei matrice. Pentru această lucrare, PHP ne oferă două funcții de utilitate pe care nu le-am folosi niciodată pentru a crea o ieșire front-end, dar sunt perfecte pentru munca de diagnosticare-var_dump () și print_r ().

Ambele funcții iau o variabilă care conține o matrice ca intrare și scoate conținutul ei pentru a le examina. var_dump () conține mai multe informații, cum ar fi tipul de date (șir, boolean, întreg, etc.) și lungimea datelor, în timp ce print_r () este conceput pentru a fi mai ușor de citit de om și ignoră aceste informații suplimentare.

Utilizând var_dump pentru a găsi un index sau o cheie

Aici este o captură de ecran a unui var_dump a datelor meta pentru o postare. Arată cum m-am descurcat într-un singur câmp. Scopul meu a fost sa obtin valoarea campului titlului de meta creat de pluginul WordPress SEO by Yoast.

După cum puteți vedea din var_dump, am generat din toate câmpurile meta pentru postul ID # 1 cu get_post_meta (1); Lucram cu o matrice asociativă multidimensională, care conținea o matrice indexată cu un singur indice. Examinând var_dump, am constatat că cheia de care aveam nevoie era '_yoast_wpseo_title' și că informațiile actuale de care aveam nevoie erau în primul index. Pentru a accesa, am pus cheia '_yoast_wpseo_title' în variabila proprie și apoi am reluat primul index ca acesta:

 $ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; echo "
TITLUL SEO: ". $ seo_title [0]. '
„;

Acesta este un bun exemplu pentru a ilustra strategia de a găsi cheia necesară, dar nu este cea mai eficientă modalitate de a obține informațiile, odată ce cunoașteți cheia. Deci, după ce a făcut munca detectivului pentru a găsi cheia corectă, aș specifica cheia direct în apelul către get_post_meta (). Când avem nevoie de o singură cheie, o puteți specifica direct în al doilea argument al lui get_post_meta ().

Este important să rețineți asta get_post_meta (1, '_yoast_wpseo_title'); nu vom returna valoarea de care avem nevoie, ci vom returna o matrice. Adăugând adevărat pentru al treilea argument "singur" putem obține doar primul indice, ceea ce avem nevoie.

Deci, pentru a echivala direct titlul SEO, toate într-o linie am fi nevoie pentru a face acest lucru:

 get_post_meta (1, '_yoast_wpseo_title', adevărat);

Folosind get_user_meta ()

Până acum, în această serie, v-am arătat cum să lucrați cu wp_postmeta tabel, care conține toate câmpurile personalizate adăugate la un tip de postare.

Utilizatorii pot avea și câmpuri personalizate. Metadatele utilizatorilor, câmpurile suplimentare adăugate la profilurile utilizatorilor funcționează la fel ca și datele post meta, dar sunt stocate în wp_usermeta masa. Când lucrați cu meta date de utilizator, în loc de get_post_meta (), folosim get_user_meta ().

Aceste două funcții funcționează identic, doar obțin datele din două tabele diferite din baza de date.

Iată un exemplu folosind get_user_meta () pentru a afișa o imagine personalizată ca link către postările unui autor:

 $ users = array (55, 89, 144, 233, 377); foreach ($ utilizatori ca $ user) $ link = get_author_posts_url ($ user); $ img = get_user_meta ($ user, 'link_img',; echo '„;  // sfârșitul buclă foreach

Urmeaza…

În cele două părți ale acestei serii, am examinat diferitele tipuri de meta date, modul în care sunt stocate și modul în care le putem prelua. Mai mult, am analizat cele două tipuri de rețele care oferă PHP și modul în care aceasta corespunde meta-datelor asociate postărilor și utilizatorilor.

În următoarea parte a seriei, vom analiza exact modul în care putem itera prin fiecare tip de date, astfel încât să avem puterea și flexibilitatea de a personaliza rezultatele pentru șabloanele noastre.

Cod