WP_Query ist das Herz von WordPress.
Es treibt jeden Seitenaufruf an. Aber es ist auch Ursache #1 für langsame Websites.
In 2026, mit PHP 8.4, können wir uns keinen faulen Code leisten. Dieser 1500-Wörter-Guide deckt den Standard Loop, Erweiterte Argumente und Performance-Gefahren ab.
Teil 1: Standard vs. Sekundärer Loop
1. Der Main Loop (Global)
Passiert automatisch.
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Template
endwhile;
endif;
2. Der Sekundäre Loop (Custom)
Die Goldene Regel: Nutzen Sie immer new WP_Query(). Nutzen Sie niemals query_posts().
$args = [
'post_type' => 'post',
'posts_per_page' => 5,
'no_found_rows' => true, // KRITISCH FÜR PERFORMANCE
];
$query = new WP_Query( $args );
Teil 2: Performance-Killer (Was Sie NICHT tun sollten)
1. posts_per_page => -1
Niemals tun. Das lädt ALLE Posts in den RAM. Setzen Sie immer ein Limit.
2. SQL_CALC_FOUND_ROWS (Paginierung)
Standardmäßig zählt WP alle Zeilen für die Paginierung.
Wenn Sie keine Paginierung brauchen: no_found_rows => true.
3. Komplexe meta_query
Metadaten sind langsam zu durchsuchen. Nutzen Sie Custom Taxonomies für durchsuchbare Daten.
Teil 3: Fortgeschrittene Szenarien
Exkludieren des aktuellen Posts
$args = [
'post__not_in' => [ get_the_ID() ],
];
Teil 4: Paginierung in Custom Loops
Paginierung bricht oft in Custom Loops.
Sie müssen das paged-Argument manuell übergeben.
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = [
'paged' => $paged,
];
Zusammenfassung
- Nutzen Sie
WP_Query. - Optimieren Sie:
no_found_rows => trueohne Paginierung. - Sanitize: Vermeiden Sie
posts_per_page => -1. - Reset: Immer
wp_reset_postdata().
Schreiben Sie saubere Queries.



