Die Suche nach Beiträgen mit (oder ohne) bestimmten Custom Field Werten – meta_queries

802 5661
Foto von Gabriele Lässer

Nachfolge Vergleichs-Operatoren können verwendet werden:

  • = Fragt Metaschlüssel ab, die gleich einem Metawert sind
  • != Fragt Metaschlüssel ab, die NICHT gleich einem Metawert sind
  • > Fragt Metaschlüssel ab, die größer als der Metawert sind
  • >= Fragt Metaschlüssel ab, die größer & gleich dem Metawert sind
  • < Fragt Metaschlüssel ab, die kleiner als der Metawert sind
  • <= Abfrage von Metaschlüsseln, die kleiner und gleich dem Metawert sind
  • LIKE Sucht nach einer Übereinstimmung zwischen dem Metawert und einer von Ihnen angegebenen Zeichenfolge
  • NOT LIKE Sucht nach einer Nichtübereinstimmung zwischen dem Metawert und einer von Ihnen angegebenen Zeichenkette
  • IN Sucht nach Übereinstimmungen zwischen dem Metawert und einem von Ihnen angegebenen Array von Werten
  • NOT IN Sucht nach Nichtübereinstimmungen zwischen dem Metawert und einem von Ihnen angegebenen Wertefeld
  • BETWEEN Sucht nach Übereinstimmungen zwischen zwei von Ihnen angegebenen Werten
  • NOT BETWEEN Sucht nach Nichtübereinstimmungen zwischen zwei von Ihnen angegebenen Werten

Auch der Typ lässt sich in der Abfrage definieren:

NUMERIC, BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED und UNSIGNED

Mit diesem Snippet lassen sich Beiträge, in denen ein bestimmter Wert in einem benutzerdefinierten Feld vorkommt, suchen:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'my_custom_field',
            'value' => 'suchwert',
            'compare' => 'LIKE',
        )
    )
);
$q = new WP_Query($args);

Soll der exakte Wert vorkommen, den Operator „=“ verwenden.

Um nach mehreren Werten (einem Array von Werten) zu suchen:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'my_custom_field',
            'value' => array('value1', 'value2', 'value3'),
            'compare' => 'IN',
        )
    )
);
$q = new WP_Query($args);

Um festzustellen, ob ein bestimmter Wert gesetzt wurde, aber nicht welcher, kann mit dem Vergleichsparameter EXISTS abgefragt werden:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'my_meta_key',
            'compare' => 'EXISTS'
        )
    )
);
$query = new WP_Query( $args );

Umgekehrt funktioniert das natürlich auch:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'my_meta_key',
            'compare' => 'NOT EXISTS'
        )
    )
);
$query = new WP_Query( $args );

Die Such nach einem numerischen Wert innerhalb eines bestimmten Bereich:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'my_meta_key',
            'value' => array( 10, 30 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
);
$query = new WP_Query( $args );

Für einen („=“) oder mehreren bestimmten numerischen Werten („IN) den Operator ändern. Außerhalb des definierten Bereich wäre der Operator NOT BETWEEN….

Die Suche nach posts in einem Datumgsbereichs zwischen zwei Datümern liegt:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'my_meta_key',
            'value' => array( '2023-07-01', '2023-12-31' ),
            'compare' => 'BETWEEN',
            'type' => 'DATE'
        )
    )
);
$query = new WP_Query( $args );

Hier ein Beispiel für eine Mehrfachsortierung nach Meta Keys:

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'first_key',
            'value' => 'value1',
            'compare' => '='
        ),
        array(
            'key' => 'second_key',
            'value' => 'value2',
            'compare' => '='
        ),
        array(
            'key' => 'third_key',
            'value' => array( 10, 30 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    ),
    'orderby' => array(
        'first_name' => 'ASC',
        'last_name' => 'ASC',
        'age' => 'DESC'
    )
);
$query = new WP_Query( $args );

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

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

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable