Loop
Der WordPress Loop ist das zentrale PHP-Konstrukt, mit dem WordPress Beiträge und Seiten abruft und anzeigt. Er durchläuft alle Ergebnisse einer Datenbankabfrage und gibt für jeden Beitrag das Template-Markup aus. Ohne Loop gibt es keine Inhaltsdarstellung in WordPress.
Grundstruktur des Loops
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</article>
<?php endwhile; ?>
<?php endif; ?>
have_posts() prüft, ob Beiträge vorhanden sind. the_post() setzt den globalen Beitrags-Kontext für jeden Durchlauf. Innerhalb des Loops stehen alle Template-Tags wie the_title(), the_content(), the_permalink() oder get_the_ID() zur Verfügung.
Custom Loops mit WP_Query
Für eigene Abfragen – z.B. die letzten 3 Beiträge einer bestimmten Kategorie – wird WP_Query verwendet. Das erstellt eine neue Datenbankabfrage unabhängig vom Haupt-Loop:
$query = new WP_Query([
'post_type' => 'post',
'category_name' => 'news',
'posts_per_page' => 3,
]);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title();
}
wp_reset_postdata(); // Wichtig: Haupt-Query wiederherstellen
}
Loop und Block Editor
Im Gutenberg Block Editor wird der Loop nicht direkt in Templates sichtbar – er läuft im Hintergrund. Block Themes und FSE abstrahieren ihn durch den Query Loop Block, der visuell konfiguriert werden kann, ohne PHP zu schreiben. Für Classic Themes und individuelle Templates ist das Verständnis des Loops jedoch unerlässlich.

