WP Query Parameter

Defaults, wenn keine Parameter mitgegeben werden.

PHP
/**
 * WP_Query Defaults
 */
$query = new WP_Query( [
    'post_type'      => 'post',       // Beiträge
    'posts_per_page' => 10,           // aus Einstellungen → Lesen
    'post_status'    => 'publish',    // nur veröffentlichte
    'orderby'        => 'date',       // nach Datum
    'order'          => 'DESC',       // neueste zuerst
    'paged'          => 1,            // erste Seite
] );

post_status

PHP
/**
 * post_status – alle Möglichkeiten
 */
$query = new WP_Query( [
    'post_status' => 'publish',    // veröffentlicht (Standard)
    'post_status' => 'draft',      // Entwurf
    'post_status' => 'pending',    // wartet auf Review
    'post_status' => 'private',    // privat
    'post_status' => 'trash',      // Papierkorb
    'post_status' => 'auto-draft', // automatischer Entwurf
    'post_status' => 'inherit',    // Revisionen, Attachments
    'post_status' => 'future',     // geplant (Datum in Zukunft)
    'post_status' => 'any',        // alle ausser trash + auto-draft

    // mehrere kombinieren:
    'post_status' => [ 'publish', 'draft', 'private' ],
] );

orderby

PHP
/**
 * orderby – alle Möglichkeiten
 */
$query = new WP_Query( [
    'orderby' => 'date',           // Veröffentlichungsdatum (Standard)
    'orderby' => 'modified',       // letztes Änderungsdatum
    'orderby' => 'title',          // alphabetisch nach Titel
    'orderby' => 'menu_order',     // manuelle Reihenfolge
    'orderby' => 'ID',             // nach Post-ID
    'orderby' => 'author',         // nach Autor
    'orderby' => 'name',           // nach Post-Slug
    'orderby' => 'type',           // nach Post Type
    'orderby' => 'parent',         // nach Parent-ID
    'orderby' => 'comment_count',  // nach Anzahl Kommentare
    'orderby' => 'rand',           // zufällig (kein order nötig)
    'orderby' => 'relevance',      // Relevanz (nur bei 's' Suche)
    'orderby' => 'none',           // keine Sortierung
    'orderby' => 'meta_value',     // nach Custom Field (string)
    'orderby' => 'meta_value_num', // nach Custom Field (numerisch)

    // meta_value braucht meta_key:
    'orderby'  => 'meta_value_num',
    'meta_key' => 'preis',

    // mehrere kombinieren:
    'orderby' => [
        'menu_order' => 'ASC',
        'date'       => 'DESC',
    ],
] );

orderby custom post types (meta_value_num)

PHP
/**
 * meta_value_num – numerische Sortierung
 */

// Nach Preis sortieren (günstigste zuerst)
$query = new WP_Query( [
    'post_type' => 'produkt',
    'orderby'   => 'meta_value_num',
    'meta_key'  => 'preis',
    'order'     => 'ASC',
] );

// Nach Bewertung sortieren (beste zuerst)
$query = new WP_Query( [
    'post_type' => 'rezension',
    'orderby'   => 'meta_value_num',
    'meta_key'  => 'bewertung',
    'order'     => 'DESC',
] );

// Nach Reihenfolge/Priorität sortieren
$query = new WP_Query( [
    'post_type' => 'projekt',
    'orderby'   => 'meta_value_num',
    'meta_key'  => 'prioritaet',
    'order'     => 'ASC',
] );

meta_value_num vs meta_value

Bash
/**
 * Wichtig: meta_value vs meta_value_num
 *
 * meta_value (String):  "9" kommt nach "10" (alphabetisch: 1 < 9)
 Ä meta_value_num (Zahl): 9 kommt vor 10 (numerisch korrekt)
 *
 *  Bei Zahlen IMMER meta_value_num verwenden
 */
 
Der Unterschied ist wichtig: meta_value sortiert "100" vor "20" weil 1 < 2 alphabetisch. meta_value_num sortiert korrekt 20 vor 100.

order

PHP
/**
 * order – alle Möglichkeiten
 */
$query = new WP_Query( [
    'order' => 'DESC', // absteigend – neueste/grösste zuerst (Standard)
    'order' => 'ASC',  // aufsteigend – älteste/kleinste zuerst
] );