Ordenar por várias meta-chave e meta-valor [fechado]

16

Como posso definir a ordem de várias chaves meta por meta-valor, alguém pode me dar um exemplo?

Dhiraj Suthar
fonte
4
Bem-vindo ao WPSE - para ajudá-lo, você precisa nos ajudar. Você pode descrever com mais detalhes o que está tentando fazer e, talvez, publicar alguns exemplos de código.
TheDeadMedic #

Respostas:

31

meta_queryé uma matriz de meta-cláusulas. Por exemplo:

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

Você pode usar uma matriz associativa, com uma chave para cada cláusula meta:

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

Em seguida, você pode usar essas chaves no order_byargumento, com uma:

$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 mais cláusulas:

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

Exemplo retirado desta postagem no blog Make WordPres Core.

cybmeta
fonte
não esqueça de adicionar o tipo da meta-chave / valor. isso afetará os resultados. por padrão, o wp tratará sua meta como uma string.
Alexander Ivashchenko
3
Mas e se eu não quiser retornar apenas resultados onde o estado é Wisconsin? Desejo que todos os estados sejam retornados e quero linhas onde possa ou não haver uma cidade e ainda ordenar por esses dois campos. por exemplo, nenhuma cláusula WHERE - apenas uma ORDER BY.
Felix Eve