Trier par plusieurs méta clé et méta valeur [fermé]

16

Comment puis-je définir l'ordre des clés méta multiples par valeur méta, quelqu'un peut-il me donner un exemple?

Dhiraj Suthar
la source
4
Bienvenue chez WPSE - pour que nous puissions vous aider, vous devez nous aider. Pouvez-vous décrire plus en détail ce que vous essayez de faire et peut-être publier des exemples de code.
TheDeadMedic

Réponses:

32

meta_queryest un tableau de méta-clauses. Par exemple:

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

Vous pouvez utiliser un tableau associatif, avec une clé pour chaque méta-clause:

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

Ensuite, vous pouvez utiliser ces clés dans l' order_byargument, avec une:

$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.
) );

Ou plusieurs clauses:

$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',
    ),
) );

Exemple tiré de ce post dans le blog Make WordPres Core.

cybmeta
la source
n'oubliez pas d'ajouter le type de la méta clé / valeur. cela affectera les résultats. par défaut, wp traitera votre méta comme une chaîne.
Alexander Ivashchenko
3
Mais que se passe-t-il si je ne veux pas retourner uniquement les résultats là où l'État est le Wisconsin? Je veux que tous les états soient retournés et je veux des lignes où il peut y avoir ou non une ville et toujours classer par ces 2 champs. par exemple, aucune clause WHERE du tout - juste un ORDER BY.
Felix Eve