Mastering WordPress Meta Data Forståelse og bruk av arrays

I den første delen av denne serien dekket vi hva WordPress-metadata er, hvordan det kan hentes, og de ulike datatyper (for eksempel objekter eller arrayer) der det kan returneres. Nå er det på tide å lære om ulike typer arrays.

Når du skriver en matrise manuelt, vet du hva strukturen er som navnet på hver indeks er. Men når du bygger arrays ved å spørre en database, må du gjøre noe detektivarbeid for å bestemme strukturen av dataene som returneres og navnene på indeksene.

Array Typer

Før du faktisk hopper inn i ulike typer arrays som er tilgjengelige, er det viktig å forstå at et PHP-array er en variabel som inneholder mer enn ett stykke data.

Associative Versus Indexed Arrays

Det enkleste eksempelet på en matrise er en kommaseparert liste over verdier, inne i funksjonen array (), som dette:

 $ heros = array ('Luke', 'Leia', 'Han');

PHP indekserer automatisk arrayer opprettet i kommaseparerte lister, og tilordner hvert element en numerisk indeks, starter ved null. Dette betyr at vi kunne hente verdien av det andre elementet 'Leia' av $ helter array ved å spesifisere indeksen 1.

Her er det som ville se ut:

 $ helter = array ('Luke', 'Leia', 'Han'); ekko $ helter [1];

For et praktisk WordPress-eksempel, ta en titt på funksjonen wp_get_attachment_image_src () som returnerer en indeksert rekke med informasjon om et bilde.

Vi kan få nettadressen, bredden og høyden til et bilde ved hjelp av tallindeksene fra matrisen denne funksjonen returnerer (merk at "7" som sendes til funksjonen refererer til vedleggs-ID, og ​​i dette tilfellet er det vilkårlig med det formål å vårt eksempel):

 $ img = wp_get_attachment_image_src (7); ekko ' ';

Selvfølgelig, å holde oversikt over indeks tallene i arrayer kan bli forvirrende, og derfor kan PHP lage oss associative arrayer. Tilbake til vår $ helter Eksempel, vi kunne gi hvert element i vårt utvalg et navn:

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

Vi kaller disse navnene nøkler. I denne gruppen vil vi si at nøkkelen 'unlikely_hero' har verdien 'Luke'. Vi kan få verdien av denne nøkkelen ved å plassere den i parentes ved siden av variabelen. For eksempel:

 echo $ hereos ['unlikely_hero'];

Flerdimensjonale arrays

Så langt har vi sett på arrays som egentlig er en liste over elementer, men arrays kan også bestå av andre arrays. Vi kaller disse flerdimensjonale arrays. Når vi lager et flerdimensjonalt array, har vi i hovedsak en liste over lister, hvor hver indeks eller nøkkel i vårt array er definert av en annen matrise.

For eksempel:

 $ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero'), 'Leia' => array ('full_name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Prinsesse'), 'Han' => array ('full_name' => 'Han Solo' home_planet '=>' Corell ',' trope '=>' Lovable Rouge ',),);

Denne typen array er veldig nyttig som det tillater oss å gå gjennom det, skrive vår opptelling en gang og la PHP iterere over det så mange ganger som mulig.

Verktøy for detektivarbeid

Som jeg sa i begynnelsen av denne artikkelen, kan arbeid med metadata ofte involvere noen detektivarbeid for å oppdage arrayets struktur. Som enhver detektiv må du sørge for at du har de riktige verktøyene for jobben.

Amatørutviklere modifiserer deres temafiler for å utdatere verdier av arrays midlertidig. Men hvis du vil jobbe raskt og effektivt, vil du gjøre det på en måte - med feilsøkingskonsoll.

Amatørutviklere modifiserer deres temafiler for å utdatere verdier av arrays midlertidig. Men hvis du vil jobbe raskt og effektivt, vil du gjøre det på en måte - med feilsøkingskonsoll.

Hva er Debug Console?

Feilsøkingskonsollen er en av flere tilleggsprogrammer for Debug Bar-plugin-modulen som ingen WordPress-utvikler burde være uten. Hvis du ikke allerede har Debug Bar installert i utviklingsmiljøet ditt, må du gjøre det så snart som mulig.

Når du har installert disse to pluginene, vil du kunne få tilgang til en konsoll fra administrasjonslinjen, der du kan kjøre PHP-kode. Nå, i stedet for å endre en temafil, kan du lagre og forfriskende du bare kan eksperimentere med kode rett i nettleseren.

Bare klikk "løp" og se resultatene nederst på skjermen. Den beste delen er at eventuelle feil du genererer, vises i resultatboksen, ikke på sidens frontend. Fatal feil bryter feilsøkingskonsollen, ikke nettstedet ditt.

Jeg har nettopp bare skrapet overflaten av hva Debug Bar kan gjøre, forresten. Også, både Debug Bar og Debug Console, samt en rekke andre kule verktøy er inkludert i Developer Plugin, som jeg anbefaler. Når du lærer å jobbe med metadata, kan du også finne plugin Debug Bar Post Meta ganske nyttig også.

var_dump vs print_r

Nå som du har et sted å gjøre testingen din, hvordan kan du utforske interiøret i en matrise. For dette arbeidet gir PHP oss to bruksfunksjoner som vi aldri ville bruke for å lage frontend-utgang, men er perfekte for diagnostisk arbeid-var_dump () og print_r ().

Begge disse funksjonene tar en variabel som inneholder en matrise som en inngang og sender ut innholdet for at vi skal undersøke. var_dump () inneholder mer informasjon som datatype (streng, boolean, heltall, etc.) og lengden på dataene, mens print_r () er utformet for å være mer menneskelig lesbar og hopper over denne tilleggsinformasjonen.

Bruk var_dump til å finne en indeks eller nøkkel

Her er et skjermbilde av en var_dump av metadataene for et innlegg. Det viser hvordan jeg boret ned til bare ett felt. Målet mitt var å få verdien av meta tittelfeltet opprettet av WordPress SEO ved Yoast plugin.

Som du kan se fra var_dumpen, genererte jeg fra alle meta-feltene for post ID # 1 med get_post_meta (1); Jeg jobbet med et assosiativt, flerdimensjonalt array, som inneholdt en indeksert array med bare en indeks. Ved å undersøke var_dumpen fant jeg at nøkkelen jeg trengte var '_yoast_wpseo_title' og at den faktiske informasjonen jeg trengte var i den første indeksen. For å få tilgang til det, legger jeg nøkkelen '_yoast_wpseo_title' i sin egen variabel, og ekko deretter den første indeksen slik:

 $ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; ekko '
SEO TITLE: '. $ seo_title [0]. '
';

Dette er et godt eksempel for å illustrere strategien for å finne den nødvendige nøkkelen, men er ikke den mest effektive måten å få informasjonen på når du kjenner nøkkelen. Så, etter å ha gjort detektivarbeidet for å finne riktig nøkkel, ville jeg spesifisere nøkkelen direkte i samtalen til get_post_meta (). Når vi trenger bare en nøkkel, kan du spesifisere den direkte i det andre argumentet til get_post_meta ().

Det er viktig å huske på det get_post_meta (1, '_yoast_wpseo_title'); Vil ikke returnere verdien vi trenger, men i stedet returnere en matrise. Ved å legge til sant for det tredje argumentet "single" kan vi bare få den første indeksen, som er det vi trenger.

Så, for å direkte ekko SEO-tittelen, alt i en linje måtte vi gjøre dette:

 get_post_meta (1, '_yoast_wpseo_title', true);

Bruke get_user_meta ()

Så langt i denne serien har jeg vist deg hvordan du skal jobbe med wp_postmeta tabell, som inneholder alle de egendefinerte feltene lagt til en posttype.

Brukere kan også ha egendefinerte felt. Bruker meta data, ekstra felt lagt til brukerprofiler fungerer mye på samme måte som post metadata, men lagres i wp_usermeta bord. Når du arbeider med bruker-metadata, i stedet for get_post_meta (), vi bruker get_user_meta ().

Disse to funksjonene fungerer identisk, de får bare dataene fra to forskjellige tabeller i databasen.

Her er et eksempel ved bruk av get_user_meta () å skrive ut et egendefinert bilde som en lenke til forfatterens innlegg:

 $ users = array (55, 89, 144, 233, 377); foreach ($ brukere som $ bruker) $ link = get_author_posts_url ($ bruker); $ img = get_user_meta ($ user, 'link_img',; echo '';  // ende foreach loop

Neste…

I de to delene av denne serien har vi undersøkt de ulike typer metadata, hvordan de lagres, og hvordan vi kan hente dem. Videre har vi sett på de to typer arrays som PHP tilbyr, og hvordan dette tilsvarer metadata knyttet til innlegg og brukere.

I neste del av serien ser vi nøyaktig hvordan vi kan gjenta gjennom hver type data, slik at vi har kraft og fleksibilitet til å tilpasse utdataene for våre maler.