Consultando o tipo de postagem personalizado com 2 campos personalizados (intervalo de datas)

4

Eu pesquisei o WP Codex e o StackExchange e obtive algumas dicas, mas não consigo fazer essa consulta funcionar. Eu tenho 2 campos personalizados associados a cada exposição no formato Y-m-d: data de término sendo a data de início da exibição e a data de término sendo a data de término.

Eu posso exibir facilmente as próximas exposições e exibições passadas, mas não consigo obter o meta_query para exibir exibições atuais (com uma data de início menor ou igual a hoje e a data final maior ou igual a hoje). O código abaixo não exibe nada na página. Ajuda?

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$today = date('Y-m-d', strtotime('-6 hours'));
query_posts(array(
    'post_type' => 'exhibitions', 
    'posts_per_page' => 6, 
    'paged' => $paged,
    'orderby' => 'title',
    'order' => 'DESC',
    'meta_query'=>array(
        'relation'=>'AND',
        array(
            'key' => 'exstart-date',
            'value' => $today,
            'compare' => '<=',
            'type' => 'CHAR'
            ),
        array(
            'key' => 'exend-date',
            'value' => $today,
            'compare' => '>=',
            'type' => 'CHAR'
            )
        )
    ));
if (have_posts()) :
while (have_posts()) : the_post();
    
por Ray Gulick 11.09.2011 / 23:06

1 resposta

2

Aqui está o código que acabei com isso funciona. Eu deveria ter mencionado que a consulta estava dentro do loop, porque quando eu mostrei para Damian Taggart da Mindshare Studios, ele notou que ele deveria estar usando WP_Query ao invés de query_posts. Obrigado a Milo e outros por tentarem me ajudar sem ter todas as informações necessárias.

<?php
     $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
     $today = date('Y-m-d', strtotime('-6 hours'));
     $myquery = new WP_Query(array(
     'post_type' => 'exhibitions', 
     'posts_per_page' => 6,  
     'paged' => $paged,
     'orderby' => 'title',
     'order' => 'ASC',
     'meta_query'=>array(
            'relation'=>'AND',
            array(
                'key' => 'exstart-date',
                'value' => $today,
                'compare' => '<=',
                'type' => 'CHAR'
            ),
            array(
                'key' => 'exend-date',
                'value' => $today,
                'compare' => '>=',
                'type' => 'CHAR'
            )
        )
    ));
    if ($myquery->have_posts()) :
    while ($myquery->have_posts()) : $myquery->the_post();
?>
    
por Ray Gulick 20.09.2011 / 00:33