Über Web, Tech, Games, Art,
Code & Design

3. März 2023

WP_Query – Der WordPress-Loop

WP_Query ist eine der wichtigsten Funktionen in WordPress, die es ermöglicht, maßgeschneiderte Abfragen für Beiträge und Custom Post Types durchzuführen. Diese Abfragen können auf verschiedene Arten spezifiziert werden, einschließlich der Einschränkung nach Kategorien, Tags, Datum und vielem mehr.

Die Syntax für WP_Query ist relativ einfach und besteht aus der Definition von Parametern innerhalb eines Array-Objekts. Zum Beispiel kann eine einfache Abfrage, die alle Beiträge in einer bestimmten Kategorie zurückgibt, folgendermaßen aussehen:

$args = array(
    'category_name' => 'aktuelles',
);
$query = new WP_Query( $args );

Diese Abfrage würde alle Beiträge aus der Kategorie „aktuelles“ zurückgeben. Es gibt jedoch viele weitere Parameter, die angegeben werden können, um eine Abfrage weiter anzupassen. Einige der wichtigsten Parameter sind:

  • „post_type“: Gibt den Post-Typ an, nach dem gesucht wird. Standardmäßig werden Beiträge und Seiten durchsucht, aber benutzerdefinierte Post-Typen können ebenfalls spezifiziert werden.
  • „orderby“: Gibt an, wie die Ergebnisse sortiert werden sollen. Mögliche Werte sind „date“, „title“, „rand“ (zufällige Reihenfolge), und viele weitere.
  • „order“: Gibt die Sortierreihenfolge an, die verwendet werden soll (ASC (aufsteigend) oder DESC (absteigend)).
  • „posts_per_page“: Gibt an, wie viele Beiträge auf jeder Seite angezeigt werden sollen.

Etwas komplexer wird es z.B. bei einer Abfrage, bei dem Custom Post Types nach dem Datum sortiert werden soll, das Datum aber in einem Custom Field eingetragen ist. (Wie z.B. in diesem Beispiel.) Das funktioniert z.B so:

<?php 
$args = array(
    'post_type' => 'termin',
    'meta_query' => array(
        array(
            'key' => 'datum',
            'value' => date('Y-m-d'),
            'compare' => '>=',
            'type' => 'DATETIME'
        )
    ),
    'orderby' => 'meta_value',
    'meta_key' => 'datum',
    'order' => 'ASC',
    'posts_per_page' => -1
);

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) :  
   
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>        
        <div class="termin">
            <h3><?php the_title(); ?></h3>
            ...
        </div>
        
        <?php endwhile; 

    wp_reset_postdata(); 

endif; ?>

Tipp: Bei der Erstellung komplexer WP_Querys ist Chat GPT eine große Hilfe. So habe ich den obenstehenden Code einfach durch die Anfrage „Schreibe einen WP_Query bei dem aller Custom Post Types „Termin“ augegeben werden. Es gibt ein Custom Field namens ‚Datum‘. Es sollen nur die Beiträge gezeigt werden, deren Datum in der Zukunft liegt.“ erstellen lassen.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert