I de to første delene av denne serien dekket vi hva metadata er i WordPress og hvordan vi arbeider med de arrayene som vanligvis returneres. Nå som du har lært å gjøre detektivarbeidet som er nødvendig for å finne strukturen i en matrise, er det på tide å lære å bruke sløyfer for å automatisere prosessen med å skrive ut en matrise.
Når du har lært denne viktige ferdigheten, må du aldri skrive repetitiv HTML-markering igjen.
Standard WordPress loop er en samtidig som
sløyfe, som i "mens det er gjenstander til sløyfe, fortsett sløyfen." Ofte, når du arbeider med metadata, er det lettere å jobbe med en for hver
sløyfe.
Disse sløyfer tillater oss å skrive vår PHP som om vi jobbet med et enkelt array, og deretter for hvert element, utdata hvert element fra et flerdimensjonalt array gjennom samme sløyfe.
Tidligere så vi på denne gruppen:
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero'), 'Leia' => array ('full navn' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess'), 'Han' => array ('full_name' => 'Han Solo' , 'home_planet' => 'Corell', 'trope' => 'Lovable Rouge',),);
Hvis vi ønsket å gjøre denne gruppen lesbar, med riktig markering ville vi lage en for hver
sløyfe.
Vi pleier å sette opp for hver
sløyfer med flertall og singularformer av variabelen, dvs.., foreach ($ heroes as $ hero)
og derfra kan vi bruke singularvariabelen til å representere hvert element i matrisen.
Vi kan så behandle vårt flerdimensjonale utvalg som ett enkelt utvalg.
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero'), 'Leia' => array ('full navn' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess'), 'Han' => array ('full_name' => 'Han Solo' , 'home_planet' => 'Corell', 'trope' => 'Lovable Rouge',),); ekko '
Dette er et abstrakt eksempel, men jeg er sikker på at du kan se kraften. I stedet for å skrive om (og måtte oppdatere) samme oppskrift tre ganger, skriver du det bare en gang, og lar PHP løpe gjennom det tre ganger.
Disse seks enkle kodelinjene kan like enkelt håndtere femti innlegg som fem som viser oss kraften i foreaksløkker for å skrive lett å administrere, skalerbar kode.
I dette neste eksempelet tar vi en rekke innleggs-ids, og foreach-post returnerer navnet på et felt YOUTUBE_NAME
som en lenke som er angitt i YOUTUBE_LINK
felt. Disse seks enkle kodelinjene kan like godt håndtere femti innlegg som fem som viser oss kraften til for hver
sløyfer for å skrive lett å administrere, skalerbar kode.
$ innlegg = array (5, 8, 13, 21, 34); foreach ($ innlegg som $ post) $ link = get_post_meta ($ post, 'youtube_link', 'single'); $ name = get_post_meta ($ post, 'youtube_name', 'single'); ekko ''. $ navn. ''; // ende foreach loop
Så langt har jeg manuelt spesifisert post-IDer, men når det brukes i den viktigste WordPress-løkken, kan vi sette IDen inn get_post_meta ()
manuelt med get_the_ID ()
. Så vi bruker de samme egendefinerte feltene som vi brukte i det siste eksempelet, men viste dem som en del av hovedløkken, hvis vi ønsket å legge til youtube videoen under innleggets innhold, kunne vi enkelt legge til etter, innholdet();
noe sånt som dette:
$ link = get_post_meta (get_the_ID (), 'youtube_link', 'single'); $ name = get_post_meta (get_the_ID (), 'youttube_name', 'single'); ekko '' . $ navn. '';
samtidig som
og for hver
LoopOfte vil vi ha ett tilpasset felt som inneholder en rekke serialiserte data for relatert informasjon. For eksempel kan ett felt inneholde en video tittel, mime type, URL og beskrivelse.
Serialisert lagring er spesielt nyttig når flere elementer kan legges til et felt. Å jobbe med disse tider av felt kan være vanskelig i de viktigste WordPress-løkkene. Den enkleste måten å håndtere dem på er med en sekundær sløyfe inne i hovedløkken.
I dette eksemplet har jeg lagt til en standard WordPress-innleggsløyfe, som er en samtidig som
sløyfe, en andre sløyfe som løper gjennom hvert videofelt for å lage en HTML5-videospiller, en for hver
video.
Det spiller ingen rolle om det er en video eller ti. Disse få enkle kodelinjene vil skape en spiller for hver enkelt.
hvis (have_posts) (mens (have_posts ()) the_post (); the_content (); $ videos = get_post_meta (get_the_ID (), 'videoer', falsk); foreach ($ videoer som $ video) ?Nesten der
Gjennom denne serien har vi hittil dekket hva metadata er i WordPress og anvendt denne kunnskapen for å lære om PHP-arrays og sløyfer. Vi har også sett på noen praktiske eksempler på hvordan du bruker disse dataene, eller arrayer av data i loop.
Dette er det første trinnet for å lære å bruke WordPress som et innholdshåndteringssystem. Det neste trinnet er å lære å spørre databasen ved hjelp av metafelt, noe som vi vil dekke neste gang.