Tem um campo personalizado chamado, startDate
mas é apenas em alguns eventos. Eu queria saber se não está definido para uma postagem que eu poderia usar post_date
para gerar a lista de postagens?
// if meta_key _postmeta.startDate isn't set get the rest by posts.post_date
query_posts(
array(
array(
'posts_per_page' => 10,
'meta_key' => 'startDate',
'meta_value' => date('Y-m-d'),
'meta_compare' => '<',
'orderby' => 'meta_value',
'order' => 'ASC'
),
array(
'meta_key' => 'post_date',
'meta_value' => date('Y-m-d'),
'meta_compare' => '<'
)
)
);
Respostas:
Se você pode explicá-lo no SQL, pode consultá-lo! Existem três lugares em que queremos alterar a consulta padrão:
A junção e a onde cláusula são adicionados através da
_get_meta_sql()
função . A saída é filtrada, para que possamos conectá-la:A cláusula de pedido é filtrada por
posts_orderby
:Isso nos fornece a seguinte consulta SQL:
Lembre-se de soltar os filtros depois de fazer sua consulta, caso contrário você também estragará outras. E, se possível você não deve chamar
query_posts()
a si mesmo , mas modificar a consulta principal post que é feito por WordPress, enquanto a criação da página.fonte
functions.php
arquivo do seu tema . Logo antes de executar a consulta, você coloca as duasadd_filter()
linhas. Após a consulta que você escreveremove_filter( 'get_meta_sql', 'wpse12814_get_meta_sql' ); remove_filter( 'posts_orderby', 'wpse12814_posts_orderby' );
para removê-los novamente.tente algo como:
fonte
Uma chamada de postagens de consulta faz apenas uma consulta, não duas. Portanto, não, você não pode fazer duas consultas separadas e concatenar os resultados.
Lembre-se, você está selecionando um conjunto de postagens aqui e exibindo-as. Esse conjunto é selecionado de uma só vez. Se você deseja obter dois conjuntos separados de postagens e depois mesclá-los, é algo que você terá que fazer com get_posts ou similar.
fonte