Flere WordPress loops

Flere WordPress loops

Loopet er den vigtigste funktion og hjertet i WordPress. Det er den der viser dine indlæg, kategorier, tags, arkiver osv. Har du nogensinde tænkt over, hvordan man laver flere loops? Det at have flere loops kan være genialt, hvis du har en portfolio, og vil vise dine portfolio indlæg et andet sted på siden. Læs videre og se hvordan du kan lave flere loops.

Noget af det du kan bruge et andet loop end det normale til, kan være:

  • Alle dine “featured” indlæg
  • Dine populære indlæg
  • En slider med dine seneste portfolio ting (som her på Jayj.dk)

Læs mere om loopet i codexet

Basis loop

Ikke så meget der, bare et simpelt loop

<?php if ( have_posts() ) : ?>

   <?php while ( have_posts() ) : the_post(); ?>    
   
   <!-- do stuff ... -->

   <?php endwhile; ?>

<?php endif; ?>

Det begynder så at blive lidt mere avanceret med at lave flere loops, men stadig ret simpelt hvis man ved lidt om WordPress.

Metode 1

Metode er at bruge rewind_posts() til at nulstille loopet, og gøre sådan vi kan lave et mere.

<?php rewind_posts(); ?>
 
  <?php while ( have_posts() ) : the_post(); ?>
    <!-- Do stuff... -->
  <?php endwhile; ?>

Du kan læse mere om rewind_posts() her

Du kan se et eksempel her

// Hent de 3 seneste indlæg i kategorien "Portfolio"
<?php query_posts( array( 'category_name' => 'portfolio', 'showposts' => 3 ) ); ?>

<?php while ( have_posts() ) : the_post(); ?>
    <!-- Noget portfolio stuff... -->
<?php endwhile;?>

// Nulstil loop
<?php rewind_posts(); ?>

// Normalt loop med blog indlæg
<?php while (have_posts()) : the_post(); ?>
    <!-- Indlæg stuff... -->
<?php endwhile; ?>

Metode 2

Metode 2 er den jeg bruger her på siden, da jeg synes, det er den nemmeste at arbejde med. Den er dog måske en smule avanceret før man lige lærer den.

// 3 indlæg fra kategorien "Portfolio" 
<?php $my_query = new WP_Query( array( 'category_name' => 'portfolio', 'showposts' => 3) ); ?>

<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
  <!-- Portfolio  stuff... -->
<?php endwhile; ?>

Først opretter vi et nyt query objekt, og istedet for have_posts(), bruger vi $my_query->have_posts(), fordi have_posts() allerede er brugt af det originale loop.
$my_query kan selvfølgelig være det du ønsker – Bare du husker at ændre den alle steder.

Leave a Reply