WPLounge
WordPress Loop
Home » Developers » Wat is een WordPress Loop?

Wat is een WordPress Loop?

Een WordPress Loop is een belangrijk onderdeel van een WordPress thema. Zo is het verantwoordelijk voor het weergeven van blogberichten op een pagina. We leggen de basisprincipes uit van een WordPress Loop, zodat je een duidelijk beeld krijgt van wat de code doet.

Affiliate disclaimer:
In onze artikelen en op onze pagina's staan affiliate links. Wanneer je via één van deze links een aankoop doet, ontvangen wij een (meestal kleine) commissie van de verkoper. Wij geven altijd onze eerlijke mening over producten. Klik hier voor meer informatie.

In deze handleidingen geven we een aantal voorbeelden van WordPress Loops en hoe je deze kunt aanpassen in je WordPress thema.

Wat is een WordPress Loop?

Een WordPress Loop bestaat uit PHP-code die WordPress berichten weergeeft. Een Loop wordt door WordPress thema’s gebruikt om een lijst met berichten op een webpagina weer te geven. Binnen de loop zijn er enkele functies die standaard worden uitgevoerd zoals het weergeven van een pagina. Thema ontwikkelaars kunnen echter deze uitvoer aanpassen door middel van sjabloontags. Er zijn verschillende sjabloontags beschikbaar die alleen werken binnen een WordPress Loop. In dit artikel laten we een aantal sjabloontags zien en hoe die worden gebruikt in een WordPress Loop.

TIP VAN WPLOUNGE
Divi theme & Divi Builder
Bij Elegant Themes ontvang je meer dan
85 premium WordPress themes (waaronder Divi!) voor maar 89 dollar!

Bekijk de themes »»
Lees meer over Divi.

Voorbeeld van een WordPress Loop

De code snippet hieronder is de basiscode voor een WordPress Loop.

//Controleer of een bericht bestaat, als dat zo is wordt de code uitgevoerd 
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

           <h2><?php the_title() ;?></h2> //Geef de titel van een bericht weer
            <?php the_post_thumbnail(); ?> //Toon de miniatuur afbeelding van een bericht
            <?php the_excerpt(); ?> //Laat een fragment zien van een bericht
<?php endwhile; else : ?> //Beëindig de loop
                       <p><?php _e( 'Geen berichten om weer te geven.' ); ?></p>
<?php endif; ?> //end If statement

In deze Loop hebben we één “if” -instructie en een “while” -loop. De “if” -instructie controleert of er berichten zijn om weer te geven. De “have_posts” WordPress-functie is een boolean functie. Boolean is een datatype die twee waarden kan hebben, true (waar, ja) of false (onwaar, nee). Wanneer er berichten zijn gevonden, is de uitkomst van de while loop ‘true’ en gaat de code verder met de loop.

De code gaat dan verder naar de WordPress functie “the_post“. Deze functie start met een nieuw bericht en daarna kunnen we meer functies gebruiken om elementen uit het bericht te filteren. In het voorbeeld hierboven gebruiken we de volgende functies:

  • the_title -> haalt de titel van het bericht op
  • the_post_thumbnail -> haalt een uitgelichte afbeelding van de blogpost op
  • the_excerpt -> haalt een samenvatting op van de blogpost

Er zijn nog veel meer functies die we kunnen gebruiken om bepaalde elementen uit een bericht te filteren. We bespreken er een aantal.

Maak een hyperlink van een berichttitel

Waarschijnlijk heb je weleens gezien dat een titel van een WordPress bericht een link bevat naar de daadwerkelijke content. Door op de link te klikken navigeer je naar een enkele paginaweergave van de blog. De meeste thema’s hebben een bestand met de naam single.php. Dit script wordt uitgevoerd wanneer je een bericht gaat bekijken.
In de volgende code snippet zullen we de WordPress functie “the_permalink” en “the_title” gaan gebruiken.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
           <h2><a href="<?php the_permalink(); ?>"><?php the_title() ;?></a></h2>
            <?php the_post_thumbnail(); ?>
            <?php the_excerpt(); ?>
<?php endwhile; else : ?> //Einde van de while loop
             <p><?php _e( 'Geen berichten om weer te geven.' ); ?></p>

<?php endif; ?>

Direct na de while loop verwijzen we naar de WordPress functie “the_permalink” waarmee we een hyperlink maken. De titel van het bericht komt terug via de functie “the_title”.

Content, auteur, datum en categorie weergeven

Veel WordPress blogs tonen de naam van de auteur, de volledige content, de datum van het artikel en de categorie. Wanneer je deze nuttige details wilt weergeven met een loop, kan je de volgende functies gebruiken:

  • the_content” – de volledige content weergeven
  • then_author” – naam van de auteur weergeven
  • the_time” – de tijd en datum van het artikel weergeven
  • the_category” – de categorie van het artikel

De loop zal er dan ongeveer als volgt uit kunnen zien:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
           <h2><?php the_title() ;?></h2>
           <?php the_author(); ?> <?php the_time('F j, Y'); ?> <?php the_category(); ?>
           <?php the_post_thumbnail(); ?>
           <?php the_content(); ?>
<?php endwhile; else : ?> //End the while loop
             <p><?php _e( 'Geen berichten om weer te geven.' ); ?></p>
<?php endif; ?>

Het gebruik van Conditional Tags

In WordPress worden veel tags gebruikt die alleen onder bepaalde voorwaarden worden uitgevoerd. Bijvoorbeeld de tag “Is_home” controleert of de huidige weergave van een pagina de homepagina van een blog is. We kunnen deze “Conditional Tags” gebruiken om loops alleen te starten op bepaalde pagina’s.
Als we onze Loop tussen een ïf” -voorwaarde plaatsen controleert deze voorwaarde eerst of de huidige pagina de homepagina is, alleen dan wordt de Loop op de pagina uitgevoerd.

<?php if (is_home()) {  //Script gaat alleen verder als huidige pagina de homepagina is
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
         <h2><?php the_title() ;?></h2>
           <?php the_post_thumbnail(); ?>
           <?php the_excerpt(); ?>
<?php endwhile; else : ?>
          <p><?php _e( 'Geen berichten om weer te geven.' ); ?></p>
<?php endif; ?>
} ?>

We kunnen deze “Conditional Tags” vervolgens gebruiken in standaard thema bestanden om te bepalen welke Loop op welke pagina moet worden uitgevoerd. Enkele van de meest gebruikte voorwaardelijke tags zijn:

  • is_admin() – Uitvoeren wanneer een admin gebruiker is aangemeld
  • is_single() – Uitvoeren bij een enkele paginaweergave van een bericht
  • is_page() – Uitvoeren bij een bepaalde pagina, bijv. is_page(‘over-ons’)
  • is_category() – Uitvoeren bij een bepaalde categorie, bijv. is_category(‘wplounge’)
  • is_tag() – Filteren op een tag
  • is_author() – Alleen uitvoeren bij een bepaalde auteur, bijv. is_author(‘Overdevest’)
  • is_404()Check of de pagina een 404 pagina is en dan de Loop uitvoeren
  • has_excerpt() – Controleren of er een samenvatting aanwezig is

Handige Loops in WordPress

Een aantal handige en veelgebruikte Loops in WordPress

Advertenties toevoegen na het eerste bericht

Na het eerste WordPress bericht wil je advertenties plaatsen zonder plugin. Dan is dit de manier om het te doen:

<?php if (have_posts()) : ?>
<?php $count = 0; ?>
<?php while (have_posts()) : the_post(); ?>
<?php $count++; ?>
  <?php if ($count == 2) : ?> //verander $count == 2 in $count == 3 als je na het 2e bericht een advertentie wilt plaatsen
          //Plaats hier de code van de advertentie
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <?php the_excerpt(); ?>
   <?php else : ?>
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <?php the_excerpt(); ?>
  <?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

Plak de code van de advertentie op de plek zoals aangegeven in het script om de advertentie te plaatsen na het eerste bericht.

Berichten uit een bepaalde periode laten zien

Wat veel gebruikt wordt is het ophalen van berichten uit een bepaalde periode. Gebruik hiervoor de volgende code snippet:

<?php function filter_where($where = ’) {
        $where .= " AND post_date >= '2020-01-01' AND post_date <= '2020-01-31'";
    return $where;
  }
add_filter('posts_where', 'filter_where');
query_posts($query_string);
while (have_posts()) :
      the_post();
      the_content();
endwhile;
?>

In deze Loop gebruiken we een SQL functie die met een database query de juiste berichten kan ophalen. Met het $where component definiëren we de periode en vervolgens gebruiken we een hook naar de post_where() functie. De while Loop controleert vervolgens of er content aanwezig is.

Lijst voor geplande berichten

Een lijst met berichten die binnenkort op de website verschijnen is een slimme manier om bezoekers terug te laten keren op je website. Dit kan worden bereikt met de volgende WordPress Loop

<?php query_posts('showposts=10&post_status=future'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <span class="datetime"><?php the_time('j. F Y'); ?></span></p>
<?php endwhile;
else: ?><p>Geen geplande berichten.</p>
<?php endif; ?>

In de code hierboven gebruiken we query_posts  in combinatie met de functie post_status om de titel op te halen van berichten die in de toekomst op de website geplaatst gaan worden.

Maak een archiefpagina

Een archiefpagina is een goede manier om de beste berichten van je website te tonen. Zorg ervoor dat je een template pagina aanmaakt om de archiefpagina te kunnen weergeven.

<?php
/*
Template Name: Archives
*/
?>
<?php get_header(); ?>
  <h2><?php $numposts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish'");
if (0 < $numposts) $numposts = number_format($numposts); ?>
<h2><?php echo $numposts.' Berichten sinds October 06, 2019'; ?>
  </h2>
  <ul id="archive-list">
    <?php
    $myposts = get_posts('numberposts=-1&');
    foreach($myposts as $post) : ?>
      <li><?php the_time('m/d/y') ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
  </ul>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Maak een Loop voor afbeeldingen

Een WordPress Loop maken voor afbeeldingen is een goede manier om je blog berichten te kunnen weergeven in een fotogalerij. Ieder bericht wordt dan weergegeven met een afbeelding en een fragment van het bericht. Hiervoor kan je de volgende code snippet gebruiken:

function catch_that_image() {
  global $post, $posts;
  $first_img = ’;
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];
  if(empty($first_img)){ //Definieer een standaard afbeelding
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

Om de afbeeldingen weer te geven in een browser voeg je de volgende code toe:

<?php
if (have_posts()) :
    while (have_posts()) : the_post(); ?>
        <a href="<?php the_permalink();?>" title="<?php the_title(); ?>" class="img-loop">
        <img src="https://www.wplounge.nl/wp-content/uploads/images/<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>" />
        </a>
    endwhile;
endif;
?>

De WordPress functie have_posts wordt gebruikt om te controleren of er gegevens beschikbaar zijn.

Tot slot

Ieder WordPress thema gebruikt Loops en het gebruik van een Loop is noodzakelijk om berichten weer te geven. In dit artikel hebben we een aantal voorbeelden gebruikt die je vaak zal tegenkomen op een WordPress website. Er zijn echter nog veel meer toepassingen, als je meer te weten wilt komen over Loops is het aan te raden om de codex.wordpress website te raadplegen.

💡 Wat is een WordPress Loop

Een WordPress Loop is een manier om gegevens dynamisch weer te geven door middel van specifieke parameters.

❓ Welke soorten WordPress Loops zijn er?

Er zijn veel verschillende soorten Loops, een gebruiker kan eigen Loops maken met behulp van bestaande WordPress functies

✔ Wat kan je weergeven met een Loop?

Een WordPress Loop kan gegevens en afbeeldingen op een webpagina weergeven

Beoordeel dit artikel

Roger.Overdevest

Roger is een SEO specialist met veel passie voor WordPress

Reageer