I de två första delarna i denna serie täckte vi vilka metadata som finns i WordPress och hur man arbetar med de arrayer som vanligtvis returneras. Nu när du har lärt dig att göra det detektivarbete som behövs för att hitta strukturen i en matris, är det dags att lära sig att använda slingor för att automatisera processen att mata ut en matris.
När du väl har läst denna viktiga färdighet behöver du aldrig skriva återkommande HTML-markup igen.
Standard WordPress-loop är en medan
slinga, som i "medan det finns föremål till slinga, fortsätt slingan." Ofta är det lättare att arbeta med a när man arbetar med metadata för varje
slinga.
Dessa loopar tillåter oss att skriva vårt PHP som om vi arbetade med en enda array, och sedan för varje objekt, matar ut varje objekt från en mångdimensionell array genom samma slinga.
Tidigare såg vi på denna grupp:
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'osannolik hjälte'), 'Leia' => array ('full-name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Prinsessan'), 'Han' => array ('full_name' => 'Han Solo' , 'home_planet' => 'Corell', 'trope' => 'Lovable Rouge',),);
Om vi ville göra denna array läsbar, med korrekt markering skulle vi skapa en för varje
slinga.
Vi brukar installera för varje
slingor med flera och enstaka former av variabeln, dvs., foreach ($ heroes as $ hero)
och därifrån kan vi använda singularvariabeln för att representera varje objekt i matrisen.
Vi kan sedan behandla vår multidimensionella array som en enda grupp.
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'osannolik hjälte'), 'Leia' => array ('full-name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Prinsessan'), 'Han' => array ('full_name' => 'Han Solo' , 'home_planet' => 'Corell', 'trope' => 'Lovable Rouge',),); eko "
Detta är ett abstrakt exempel, men jag är säker på att du kan se makten. I stället för att skriva om (och måste uppdatera) samma markup tre gånger skriver du bara en gång och låter PHP gå igenom det tre gånger.
Dessa sex enkla kodkoder kan lika lätt hantera femtio inlägg som fem som visar oss kraften i framklingorna för att skriva lätt att hantera, skalbar kod.
I det här nästa exemplet tar vi en rad postmeddelanden, och i förväg posten returnerar namnet på ett fält YOUTUBE_NAME
som en länk som sätts i youtube_link
fält. Dessa sex enkla kodkoder kan lika lätt hantera femtio inlägg som fem som visar oss kraften i för varje
loopar för att skriva lätt att hantera, skalbar kod.
$ inlägg = array (5, 8, 13, 21, 34); foreach ($ inlägg som $ post) $ link = get_post_meta ($ post, 'youtube_link', 'single'); $ name = get_post_meta ($ post, "youtube_name", "single"); echo ''. $ namn. ''; // avsluta slingan
Hittills har jag manuellt specificerat post-ID, men när det används i den huvudsakliga WordPress-loopen kan vi ange ID-numret get_post_meta ()
manuellt med get_the_ID ()
. Så använder vi samma anpassade fält som vi använde i det sista exemplet, men visade dem som en del av huvudslingan, om vi ville lägga till youtube videoen under inläggets innehåll kunde vi enkelt lägga till efter, innehållet();
något som det här:
$ link = get_post_meta (get_the_ID (), 'youtube_link', 'single'); $ name = get_post_meta (get_the_ID (), 'youttube_name', 'single'); eko ". $ namn. '';
medan
och för varje
SlingaOfta kommer vi att ha ett anpassat fält som innehåller en rad serialiserade data för relaterad information. Ett fält kan till exempel innehålla en titel, en mime-typ, en webbadress och en beskrivning av en video.
Serialiserad lagring är särskilt användbar när flera objekt kan läggas till ett fält. Att arbeta med dessa tider av fält kan vara knepigt i de viktigaste WordPress-looparna. Det enklaste sättet att hantera dem är med en sekundär slinga inuti huvudslingan.
I det här exemplet har jag lagt till en vanlig WordPress-postslinga, som är en medan
loop, en andra loop, som loopar genom varje videofält för att konstruera en HTML5-videospelare, en för varje
video-.
Det spelar ingen roll om det finns en video eller tio. Dessa få enkla linjer med kod skapar en spelare för var och en.
om (har_posts () while (have_posts ()) the_post (); the_content (); $ videos = get_post_meta (get_the_ID (), 'videos', false);Nästan där
Genom denna serie har vi hittills tagit upp vilka metadata som finns i WordPress och tillämpade denna kunskap för att lära sig om PHP-arrays och loopar. Vi har också tittat på några praktiska exempel på hur man använder den här data eller datalager i slingan.
Detta är det första steget att lära sig att använda WordPress som ett innehållshanteringssystem. Nästa steg är att lära sig att fråga databasen med metafält, vilket är vad vi kommer att täcka nästa gång.