Reihenfolge nach mehreren Metaschlüsseln und Metawerten [geschlossen]

15

Wie kann ich die Reihenfolge mehrerer Metaschlüssel nach Metawert festlegen? Kann mir jemand ein Beispiel geben?

Dhiraj Suthar
quelle
4
Willkommen bei WPSE - damit wir Ihnen helfen können, müssen Sie uns helfen. Können Sie genauer beschreiben, was Sie versuchen, und vielleicht einige Codebeispiele veröffentlichen?
TheDeadMedic

Antworten:

30

meta_queryist ein Array von Meta-Klauseln. Beispielsweise:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Sie können ein assoziatives Array mit einem Schlüssel für jede Metaklausel verwenden:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Dann können Sie diese Schlüssel im order_byArgument mit einem verwenden:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

Oder mehr Klauseln:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Beispiel aus diesem Beitrag im Make WordPres Core-Blog.

Cybmeta
quelle
Vergessen Sie nicht, den Typ des Metaschlüssels / -werts hinzuzufügen. Dies wirkt sich auf die Ergebnisse aus. Standardmäßig behandelt wp Ihr ​​Meta als Zeichenfolge.
Alexander Ivashchenko
2
Aber was ist, wenn ich nicht nur Ergebnisse zurückgeben möchte, wenn der Bundesstaat Wisconsin ist? Ich möchte, dass alle Bundesstaaten zurückgegeben werden, und ich möchte Zeilen, in denen es möglicherweise eine Stadt gibt oder nicht, und die nach diesen beiden Feldern sortiert sind. zB überhaupt keine WHERE-Klausel - nur eine ORDER BY.
Felix Eve