Een beginnershandleiding voor de WordPress Loop

De lus is ongelooflijk fundamenteel voor WordPress. Het is het eerste (en misschien wel het gemakkelijkste) ding dat de meeste nieuwe themanten willen proberen aan te passen? en je kunt er ongelooflijk creatief mee worden als je de basis kent. Vandaag gaan we een basis leggen voor iedereen die nieuw is in de loop van de geschiedenis of ooit iets meer wil weten over hoe het werkt.


Overzicht van Layman

De kern van de functionaliteit van WordPress ligt in het zogenaamde The Loop. Het is een heel eenvoudig concept om te begrijpen, en als je dit begrijpt, kun je goed op weg zijn naar thema-ontwikkeling. Je kunt (en moet!) De officiële codex-pagina bekijken, maar de instructie van vandaag zal gericht zijn op mensen die niet noodzakelijk genieten van het doorzoeken van de codex.

In lekentermen is de lus een eenvoudig codeblok dat alle informatie weergeeft die WordPress heeft over een bericht (en) of pagina ('s). Zoals de naam suggereert, het loops door elk bericht dat het achtereenvolgens in de database vindt (een, dan een ander, dan een ander), dus het kan omgaan met het leveren van informatie over verschillende berichten.

Voordat we in de code duiken, laten we zien wat de lussen doen. Er zijn drie cruciale delen ervan:

  1. Start de lus.
  2. Doe iets met elke post / pagina gevonden in de lus.
  3. Sluit de cirkel.

Dat is vrij eenvoudig toch? De lus zal, standaard, alles terughalen dat het kan vinden? dus er is nog een stuk waard om op te merken: de vraag. De vraag is wat we zullen gebruiken om de volledige stapel berichten te filteren voor precies wat we zoeken. Ons 'lekenmodel' wanneer we een specifieke reeks berichten willen ophalen, ziet er dus als volgt uit:

  1. Bepaal waar we naar op zoek zijn.
  2. Start de lus.
  3. Doe iets met elke post / pagina gevonden in de lus.
  4. Sluit de cirkel.

Als je ooit eerder met PHP hebt gewerkt, ben je misschien bekend met de terwijl functie die vaak wordt gebruikt om door een databasequery heen te lopen en de database-informatie dynamisch weer te geven zonder handmatig elke afzonderlijke databaselijst te hoeven invoeren. Voor de niet-PHP'ers die er zijn, denk aan de terwijl fungeert als een handige kleine bibliothecaris die alles wat u wilt uit de database haalt, één item tegelijk.

Laten we nu eens kijken naar hoe dat 'lekenmodel' er uitziet in de huidige code:

  // DOE IETS MET ELKE POST DIE WE VONDEN  // DOE IETS ALS NIETS GEVONDEN WAS 

Ik leer het beste door bijvoorbeeld, dus laten we gewoon een kijkje nemen in het standaard Twenty Ten-thema van WordPress en kijken wat de lus daar doet.


Sectie 1 Twintig tien-thema van WordPress

WordPress heeft een standaardthema dat bij elke WordPress-installatie wordt geleverd en is standaard geactiveerd. Dit jaar heet het Twenty Eleven, maar we gebruiken het thema van vorig jaar, Twintig tien, als ons voorbeeld omdat het de lus isoleert in zijn eigen bestand (wat het illustreren van onze les een beetje gemakkelijker maakt). Als u naar wp-content / themes / twentyten navigeert, ziet u een bestandsstructuur zoals we hieronder zien:

Twenty Ten scheidt de lus van de andere themabestanden. Open index.php en noteer de volgende code:

 

We zullen de code die het aanvraagt ​​binnenkort ontleden, maar het is belangrijk om te weten dat het allemaal lukt om de pagina loop-index.php aan te vragen. Als je PHP al kent, is include () vergelijkbaar met de WordPress-functie get_template_part (). Het is ook perfect acceptabel om alle code uit lusindex.php te halen en deze op de plaats van de bovenstaande code te plaatsen. Het zal hetzelfde bereiken. Een lus mag binnen een pagina bestaan ​​en hoeft geen afzonderlijke pagina te zijn.

We gaan lus.php vervolgens openen en onderzoeken wat de kernlus tot stand brengt.

Het eerste deel van loop.php is paginering, maar als u naar regel 31 scrolt, zien we een belangrijk element: een if-statement dat vraagt ​​of het berichten zijn. Deze code geeft aan "als er geen berichten zijn, geeft u een bericht weer dat er geen berichten zijn".

  Uw code of HTML die aangeeft dat er geen inhoud voor de zoekopdracht is. 

Tot en met regel 56 en je ziet nog een cruciaal element van de lus:

 

Dit is de while-verklaring die ik eerder noemde. Het kan in feite luid worden voorgelezen als "Hoe lang het ook berichten heeft, doe deze lus." Dan zie je onmiddellijk the_post (). Deze functie haalt alle post-informatie, zodat we de post-informatie kunnen weergeven met behulp van standaard WordPress-tags (hier later meer over).

Om vervolgens de lus op lijn 173 te sluiten, ziet u gewoon een einde. De echte magie en bruikbaarheid van de lus is wat er gebeurt tussen deze regels.

Stel je voor dat je HTML elke keer moet bijwerken wanneer je een blog wilt plaatsen. Dit zou ongelooflijk pijnlijk zijn en ik zou denken dat het je zou ontmoedigen om te bloggen. Ik zou niet eens de moeite nemen. Met deze lus kunt u een blogpost in een database invoeren en de inhoud in een formaat dat u ontwerpt een keer uitpakken, wat altijd zal volgen. Het enige dat u nodig hebt, is weten hoe u de lus kunt manipuleren om weer te geven wat u wilt en hoe u de gewenste inhoud wilt weergeven.


Deel 2 De inhoud weergeven

Voor de rest van deze tutorial zullen alle magie die we zullen maken na de tijd en voor de eindigheid zijn.

Het is heel eenvoudig om de gewenste informatie in de WordPress Loop weer te geven. Ik zou het sterk aanbevelen om het artikel Template Tags van WordPress Codex te lezen; dat zal je alle tags tonen die je in de loop kunt gebruiken. Ik zal enkele van de dingen die WordPress in het Twenty Ten-thema heeft opgenomen, aan u presenteren.

 
>

De eerste is de_ID (). Dit is de unieke ID van dat bericht, geen bericht of pagina zal een ID delen. Als u geen URL-rewrites hebt, ziet u deze ID in de URL van het bericht. In dit voorbeeld is het handig om het aan de div-id toe te voegen, zodat u in CSS deze ene stijl kunt stijlen zonder het formaat van alle andere berichten te beïnvloeden. De volgende is de post_class die een CSS-klasse zal toevoegen die overeenkomt met het berichttype dat het is. Als het om een ​​bericht gaat, heb je een categorie berichten. Als het een bijlage is, hebt u de klasse van de bijlage. Lees de codex voor meer informatie over post_class ();

Op de volgende regel ziet u twee veelgebruikte tags. De eerste is

 

Dit is meestal ingepakt in een element omdat het de onbewerkte permalink afbeeldt: http://yoursite.com/?p=123 De link waar het bericht altijd kan worden bereikt - wat niet best soms is - wordt automatisch geëchood als je het gebruikt de tag_permalink ().

Vlak na die tag zie je:

 

Dit is, zoals de naamgeving aangeeft, de titel van de post. Bij het plaatsen van de post, zal wat je ook plaatst als de titel hier verschijnen.

Als u naar regel 109 gaat, ziet u een aantal voorwaardelijke tags die ons baat zouden hebben om uit elkaar te halen.

 

Dit kan gewoon luid worden voorgelezen als "Als we momenteel op de archiefpagina of zoekpagina staan, geef de inhoud dan als volgt weer". Dit wordt snel gevolgd door

 

Maar wacht - in het andere van deze toestand zul je zien:

 ?', 'twintig tien' ) ); ?>

Wat is het verschil? the_excerpt () zal alleen een WordPress of door de gebruiker gedefinieerde hoeveelheid tekst van het bericht trekken. Dit is handig voor archieven of zoekopdrachten, zodat het volledige bericht niet wordt geretourneerd wanneer de gebruiker alleen maar skimt om de drift te krijgen en te zien of ze willen doorgaan met lezen. the_content () zal de hele geformatteerde post naar de label. Dat is gepast wanneer het artikel op bepaalde pagina's wordt weergegeven wanneer het niet om aandacht vraagt

 get_the_category_list (','); $ tags_list = get_the_tag_list (", ',');

Het bovenstaande zijn enkele andere tags binnen de lus die u moet kennen. De eerste regel trekt elke categorie uit waar de post aan is gekoppeld en geeft ze weer met een komma-scheidingsteken. De tweede zal hetzelfde doen met de tags die aan de post zijn gekoppeld.


Deel 2 De lus manipuleren

Nu we weten hoe we onze inhoud binnen de lus kunnen weergeven, laten we het hebben over down-and-dirty raken met de lus om precies te krijgen wat we willen.

De eerste manier om de lus te manipuleren, is om de lus rechtstreeks te bewerken. Vóór die tijd wilt u een kwalificerende query_posts () -functie toevoegen, zodat deze er als volgt uitziet:

  

In de query_posts kun je argumenten definiëren die je meer controle geven over wat je weergeeft. Met bovenstaande voorwaarden heb ik gezegd dat ik alleen berichten wil uit de categorie met de naam honkbal en dat ik er maar 10 tegelijk op de pagina wil weergeven. Dit is echt eenvoudig te gebruiken omdat u alleen een regel code toevoegt.

Een andere manier om dit te doen is om een ​​variabele te definiëren die een nieuwe query voor de database en in wezen een nieuwe lus maakt.

 $ my_query = new WP_Query ('category_name = baseball & posts_per_page = 10');

Onze while-opdracht vraagt ​​vervolgens de klassen aan bij het object $ my_query, dus nu ziet het er als volgt uit:

 $ my_query = new WP_Query ('category_name = baseball & posts_per_page = 10'); while ($ my_query-> have_posts ()): $ my_query-> the_post (); // code intussen;

Dit kan handig zijn als u een tweede lus aan uw pagina wilt toevoegen. Gebruik één lus om berichten in één categorie aan de linkerkant weer te geven, en een andere categorie aan de rechterkant. Daar zijn een hoop praktische toepassingen voor en je zult het hoogstwaarschijnlijk op een bepaald moment nodig hebben.

WordPress behandelt een derde voorbeeld van het wijzigen van een lus in hun Codex waarvan ik vind dat het een heel relevant item is om over te doen. Het wordt 'nesten' genoemd. Nesten heeft feitelijk een lus in een lus. De WordPress Codex vermeldt dat het handig zou kunnen zijn bij het gebruik van korte codes. Ik laat het je weten - ja, het is handig in korte codes en aangepaste velden. Stel je voor dat je een aangepast veld hebt dat je kunt invullen met post-id's die deel uitmaken van dezelfde serie (IE: wp.tutsplus.com heeft een lopend tutorial deel 1, 2 en 3) en laat de lus de titel trekken , uittreksel en andere informatie over het bericht. Dit is een manier om die taak te volbrengen.

De geneste lus is net als de lus die we hierboven hebben gemaakt en die wordt gedefinieerd door een variabele, met aan het einde een belangrijk stuk code:

 $ my_query = new WP_Query ('category_name = baseball & posts_per_page = 10'); while ($ my_query-> have_posts ()): $ my_query-> the_post (); // code intussen; wp_reset_postdata ();

U zult wp_reset_postdata () in deze lus opmerken. Hiermee wordt het globale opnieuw ingesteld $ bericht variabele naar het huidige bericht in de hoofdquery? wat handig is voor geneste lussen en altijd wanneer je maar wilt $ bericht na het feit werken. Met dank aan Rarst voor de toelichting hierop!

Helaas is er op dit moment niet veel documentatie van WordPress over de functionaliteit van wp_reset_postdata (). Het lijkt erop dat het enige gebruik van de functie is voor het resetten van de lus.


Conclusie

Voel je je nu een lusmeester? Dit was een zeer uitgebreide blik in de lus. De lus zelf is niet moeilijk te begrijpen, maar hij is zo fundamenteel voor al het andere dat je tegenkomt in WordPress. De lus is waar het allemaal begint, waar al je berichtinhoud wordt gegenereerd. Ik hoop dat je iets hebt geleerd. Laat gerust wat opmerkingen achter als je nog wat hulp nodig hebt!