In de eerste twee delen van deze serie hebben we besproken wat metagegevens in WordPress zijn en hoe je kunt werken met de arrays die doorgaans worden geretourneerd. Nu u hebt geleerd om het detectivewerk uit te voeren dat nodig is om de structuur van een array te vinden, is het tijd om lussen te leren gebruiken om het proces van het uitvoeren van een array te automatiseren.
Als je eenmaal deze belangrijke vaardigheid hebt geleerd, hoef je nooit meer herhaalde HTML-markeringen te schrijven.
De standaard WordPress-lus is een terwijl
loop, zoals in "while there are items to loop, ga verder met de lus." Vaak is het bij het werken met metagegevens eenvoudiger om met een te werken foreach
lus.
Met deze loops kunnen we onze PHP schrijven alsof we met een enkele array werken en vervolgens, voor elk item, elk item vanuit een meerdimensionale array uitvoeren via dezelfde lus.
We hebben eerder naar deze array gekeken:
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero',), 'Leia' => array ('volledige naam' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess',), 'Han' => array ('volledige naam' => 'Han Solo' , 'home_planet' => 'Corell', 'trope' => 'Lovable Rouge',),);
Als we deze array leesbaar wilden maken, zouden we een juiste markup maken foreach
lus.
We hebben meestal ingesteld foreach
lussen met meervoudige en enkelvoudige vormen van de variabele, d.w.z.., foreach ($ heroes als $ hero)
en van daaruit kunnen we de singuliere variabele gebruiken om elk item in de array te representeren.
We kunnen onze multi-dimensionale array dan als één array behandelen.
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero',), 'Leia' => array ('volledige naam' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess',), 'Han' => array ('volledige naam' => 'Han Solo' , 'home_planet' => 'Corell', 'trope' => 'Lovable Rouge',),); echo '
Dit is een abstract voorbeeld, maar ik weet zeker dat je de kracht kunt zien. In plaats van drie keer dezelfde waarde te herschrijven (en te moeten bijwerken), schrijf je het gewoon één keer en laat je PHP drie keer doorlopen.
Deze zes eenvoudige coderegels kunnen net zo gemakkelijk vijftig berichten verwerken als vijf die ons de kracht tonen van foreach-loops om gemakkelijk te beheren, schaalbare code te schrijven.
In dit volgende voorbeeld nemen we een array van post-id's en foreach post retourneren de naam van een veld YOUTUBE_NAME
als een koppeling die is ingesteld in de youtube_link
veld. Deze zes eenvoudige coderegels kunnen net zo goed vijftig berichten behandelen als vijf die ons de kracht van tonen foreach
loops om gemakkelijk te beheren, schaalbare code te schrijven.
$ posts = array (5, 8, 13, 21, 34); foreach ($ posts als $ post) $ link = get_post_meta ($ post, 'youtube_link', 'single'); $ name = get_post_meta ($ post, 'youtube_name', 'single'); echo ''. $ naam. ''; // einde voor elke lus
Tot nu toe heb ik handmatig post-ID's opgegeven, maar bij gebruik in de hoofdloop van WordPress kunnen we de ID instellen get_post_meta ()
handmatig met get_the_ID ()
. Dus gebruikmakend van dezelfde aangepaste velden als we gebruikten in het laatste voorbeeld, maar ze tonen als onderdeel van de hoofdlus, als we de youtube-video onder de berichtinhoud wilden toevoegen, konden we eenvoudig toevoegen, na, de inhoud();
iets zoals dit:
$ link = get_post_meta (get_the_ID (), 'youtube_link', 'single'); $ name = get_post_meta (get_the_ID (), 'youttube_name', 'single'); echo ''. $ naam. '';
terwijl
en foreach
LusVaak hebben we één aangepast veld dat een array van geserialiseerde gegevens bevat voor gerelateerde informatie. Eén veld kan bijvoorbeeld de titel van een video, mime-type, URL en beschrijving bevatten.
Seriële opslag is vooral handig als meerdere items aan een veld kunnen worden toegevoegd. Het werken met deze tijden van velden kan lastig zijn in de belangrijkste WordPress-lussen. De gemakkelijkste manier om ze aan te pakken is met een secundaire lus in je hoofdlus.
In dit voorbeeld heb ik toegevoegd aan een standaard WordPress-berichtkring, die een terwijl
loop, een tweede lus, die door elk videoveld loopt om een HTML5-videospeler te bouwen, één foreach
video-.
Het maakt niet uit of er een video of tien is. Deze paar eenvoudige coderegels zullen voor elke speler een speler creëren.
if (have_posts () while (have_posts ()) the_post (); the_content (); $ videos = get_post_meta (get_the_ID (), 'videos', false); foreach ($ video's als $ video) ?>Bijna daar
In deze serie hebben we tot nu toe besproken welke metagegevens in WordPress zijn en hebben deze kennis toegepast om meer te weten te komen over PHP-arrays en -kringen. We hebben ook gekeken naar enkele praktische voorbeelden over hoe deze gegevens te gebruiken, of reeksen gegevens in de lus.
Dit is de eerste stap naar het leren gebruiken van WordPress als een contentmanagementsysteem. De volgende stap is om te leren hoe de database door meta-velden te bevragen, dat is wat we de volgende keer zullen behandelen.