WP_Query

Was ist WP_Query?

WP_Query ist die zentrale PHP-Klasse in WordPress, mit der Datenbankabfragen für Beiträge, Seiten und Custom Post Types gebaut werden. Kurz gesagt: Immer wenn WordPress Inhalte aus der Datenbank laden soll, steckt WP_Query dahinter – entweder automatisch im Hintergrund oder manuell in eigenem Code.

Wie funktioniert WP_Query?

Du übergibst WP_Query ein Array mit Parametern, und WordPress baut daraus eine optimierte SQL-Abfrage. Das Ergebnis ist ein Objekt, das die gefundenen Beiträge enthält und durch den sogenannten Loop durchlaufen werden kann.

Ein einfaches Beispiel: Alle veröffentlichten Beiträge der Kategorie „News“, maximal 5 Stück, neueste zuerst:

$args = array(
    'post_type'      => 'post',
    'posts_per_page' => 5,
    'category_name'  => 'news',
    'orderby'        => 'date',
    'order'          => 'DESC',
);
$query = new WP_Query( $args );

Die wichtigsten Parameter im Überblick

  • post_type – welcher Inhaltstyp abgefragt wird (post, page, eigene CPTs)
  • posts_per_page – wie viele Ergebnisse zurückgegeben werden (-1 für alle)
  • orderby / order – Sortierung nach Datum, Titel, Zufallsprinzip etc.
  • meta_query – Filterung nach Custom Fields
  • tax_query – Filterung nach Taxonomien und Terms
  • s – Volltextsuche im Titel und Inhalt

WP_Query vs. get_posts() vs. query_posts()

WordPress bietet mehrere Wege, Inhalte abzufragen. get_posts() ist eine vereinfachte Variante von WP_Query – gut für einfache Abfragen ohne Loop. query_posts() hingegen sollte man meiden: Es verändert die Hauptabfrage der Seite und führt zuverlässig zu Problemen bei Pagination und anderen Funktionen. WP_Query ist in den meisten Fällen die sauberste und flexibelste Wahl.