WordPress post-loop filteren

We hebben in een ander voorbeeld gekeken hoe we berichten verschillend vorm kunnen geven door de categorie van het bericht te gebruiken als css-class. Dat geeft al aardig wat mogelijkheden voor het vormgeven van de berichten, maar het is erg lastig om met die methode berichten op verschillende plaatsen binnen een pagina te plaatsen.

Standaard maakt WordPress gebruik van een opdracht die alle berichten uit de database haalt en ze binnen je pagina plaatst. In onderstaand voorbeeld worden alle berichten binnen een div geplaatst met de class ‘post’. De titel van het bericht wordt binnen een h1-tag geplaatst en de content van het bericht binnen een p-tag.

<body>
<div id=”content”>
     <div id=”producten”>
          <?php while ( have_posts() ) : 
                    the_post(); ?>
                    <div class=”post”> 
                         <h1><?php the_title(); ?></h1>
                         <p><?php the_content(); ?></p>
                    </div>
               <?php endwhile; ?>
     </div>
</div>
</body>  

Als we een filter toevoegen aan de opdracht om berichten te plaatsen is het mogelijk om niet alle berichten te plaatsen, maar een selectie van berichten te maken. In onderstaand voorbeeld worden alleen berichten geplaatst met de categorie “producten”.

<body>
<div id=”content”>
     <div id=”producten”
          <?php query_posts(‘category_name= producten’);
               while ( have_posts() ) : 
                    the_post(); ?>
                    <div class=”post”> 
                         <h1><?php the_title(); ?></h1>
                         <p><?php the_content(); ?></p>
                    </div>
               <?php endwhile; ?>
     </div>
</div>
</body>  

Deze opdracht om berichten te plaatsen kun je verschillende keren gebruiken, steeds met een ander filter. Bijvoorbeeld om links op een pagina producten te vertonen, en rechts op de pagina nieuwsberichten te plaatsen. In onderstaand voorbeeld wordt de opdracht om berichten te plaatsen 2 keer herhaalt. Het enige verschil is de categorie-naam die gefilterd wordt.

<body>
<div id=”content”>
     <div id=”producten”
          <?php  query_posts(‘category_name= producten’);
               while ( have_posts() ) :
                    the_post(); ?>
                    <div class=”post”>
                         <h1><?php the_title(); ?></h1>
                         <p><?php the_content(); ?></p>
                    </div>
               <?php endwhile;  ?>
     </div>
     <div id=”nieuws”>
          <?php query_posts(‘category_name= nieuws’);
               while ( have_posts() ):
                    the_post(); ?>
                   <div class=”post”>
                         <h1><?php the_title(); ?></h1>
                         <p><?php the_content(); ?></p>
                    </div>
               <?php endwhile; ?>
     </div>
</div>
</body>

Leave a Reply

Your email address will not be published. Required fields are marked *