Como você usa orderby com meta_query no Wordpress 3.1?

20

É possível solicitar minha lista de postagens personalizadas, após filtrá-la com meta_query, pelos metadados de minha escolha?

Por exemplo, tenho um tipo de postagem personalizado chamado webinars. Estou tentando listar todos os próximos webinars e solicitá-los pelo meta campo personalizado chamado webinar_startDate.

Usando a seguinte consulta, consegui devolver os webinars com sucesso, excluindo os webinars antigos. No entanto, eles ainda saem na ordem em que foram publicados, e não por webinar_startDate.

<?php $my_array =  array(
    'meta_query' => array(
            array(
                'key' => 'webinar_startDate',
                'value' => date("Y-m-d H:i:s"),
                'compare' => '>=',
                'type' => 'DATETIME'
            )
    ),
    'orderby' => 'meta_value',
    'post_type' => 'webinars',
    'posts_per_page' => 20,
    'order' => 'ASC'
); ?>

Eu suspeito que, devido à mudança de 3.0 para 3.1, o uso de orderby = > meta_value é provavelmente diferente, mas não consigo encontrar uma resposta na documentação do WordPress para explicar isso.

Alguém pode ajudar? Agradecemos antecipadamente.

    
por Jeff K. 02.03.2011 / 19:59

2 respostas

17

a nova matriz meta_query seleciona quais postagens a consulta retorna. Então sim, você está indicando a 'chave' dentro desse meta_query , mas você ainda pode usar o método antigo de

'orderby' => 'meta_value', 
'meta_key' => '_events_meta',

além da meta_query, pois essas linhas indicam como ordenar a consulta resultante. Então, sim, você pode indicar o mesmo meta_key duas vezes.

    
por somatic 02.03.2011 / 20:38
1

Estou usando o código a seguir para minhas postagens personalizadas chamado events , para obter todas as postagens em um loop.

$evtLoop = new WP_Query(array('post_type' => 'events',
                              'posts_per_page' => 10,
                              'orderby' => 'meta_value', 
                              'meta_key' => '_events_meta',
                              'order'=>'DESC'));

Eu acho que você está usando seu código da mesma maneira. Eu acho que você está perdendo o meta_key com o nome do meta-campo para classificar. Talvez ajude se você adicionar

'meta_key' => 'webinar_startDate',

para o array externo?

    
por Guru 2.0 02.03.2011 / 20:34