Mastering WordPress Meta Data Werken met lussen

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.

Foreach-lussen gebruiken op arrays

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 '
    '; foreach ($ heroes als $ hero) echo '
  • Volledige naam: '. $ Hero [' volledige naam '].'
  • '; // einde van de foreach loop-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

Get_post_meta () gebruiken in de Main WordPress Loop

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. '';

Het combineren van een terwijl en foreach Lus

Vaak 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.