Wenn der Standard-Loop nicht mehr reicht
Der voreingestellte WordPress-Loop reicht für einen einfachen Blog. Sobald Sie Custom Post Types, mehrere Taxonomien und Meta-Felder gleichzeitig filtern wollen, brauchen Sie WP_Query mit allen seinen Parametern. Hier trennt sich der Hobby-Code vom produktiven WordPress-Theme.
tax_query mit logischen Operatoren
Das tax_query-Argument akzeptiert nicht nur eine flache Liste von Begriffen, sondern auch verschachtelte Bedingungen mit relation AND oder OR. Beispiel: alle Beiträge in der Kategorie „Tutorial”, die zusätzlich entweder mit „WordPress” oder mit „PHP” verschlagwortet sind. Die Verschachtelung erlaubt komplexe Filter, die in der Standard-Schleife unmöglich wären.
$args = [
'post_type' => 'post',
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'category',
'field' => 'slug',
'terms' => ['tutorial'],
],
[
'relation' => 'OR',
[
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => ['wordpress'],
],
[
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => ['php'],
],
],
],
];
no_found_rows: der Performance-Killer, den niemand kennt
Bei großen Datenbeständen führt WP_Query standardmäßig einen zweiten SQL-Query aus, nur um die Gesamtzahl der Treffer für die Pagination zu zählen. Wenn Sie die Pagination nicht brauchen (zum Beispiel in Sidebar-Widgets oder verwandten Beiträgen), setzen Sie no_found_rows auf true. In Datenbanken mit über 50.000 Beiträgen sehen wir Antwortzeiten, die von 800 ms auf 120 ms sinken.
update_post_meta_cache und update_post_term_cache
Standardmäßig lädt WordPress für jedes Ergebnis sämtliche Meta-Daten und Taxonomien vor. Das ist sinnvoll, wenn Sie diese Daten in der Schleife verwenden, und verschwenderisch, wenn nicht. Setzen Sie beide Parameter auf false, sobald Sie nur die Titel ausgeben.
meta_query: Vorsicht vor LIKE-Operatoren
Eine meta_query mit dem Vergleich LIKE führt zu Full-Table-Scans in wp_postmeta. Bei Tabellen mit Millionen Zeilen ist das ein Garant für 10-Sekunden-Antwortzeiten. Wenn Sie häufig nach Meta-Feldern filtern, lagern Sie diese in eine eigene Tabelle aus oder verwenden Sie ACF mit relationaler Speicherung.
Custom Post Types und pre_get_posts
Statt jeden Loop manuell mit WP_Query zu schreiben, modifizieren Sie die Hauptabfrage über den Hook pre_get_posts. Damit greifen Theme-Templates wie archive-{post_type}.php korrekt, und Suchergebnisse berücksichtigen Ihre CPTs ohne zusätzlichen Code.
Lesen Sie unseren WordPress-Entwickler Guide, um Ihr Theme schneller zu machen.


