“tax_query” parâmetro não está funcionando com WP_Query

12

Eu tenho um tipo de postagem personalizado chamado "episódio". Anexado a 'episode', tenho uma taxonomia personalizada chamada 'video_type' que contém dois termos: "bonus-footage" e "episode"; "episode" contém dois termos filho "season-1" e "season-2" (outras temporadas serão adicionadas no futuro). Eu quero pegar apenas o post mais recente do tipo "episódio", mas não incluir posts do termo "bônus-metragem". Abaixo está o código que estou usando para isso:

<?php
$some_args = array(
    'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'bonus-footage',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'NOT IN'
     ),
    'posts_per_page' => 1,
    'post_type' => 'episode',
);

$s = new WP_Query( $some_args );

if ( $s->have_posts() ) : $s->the_post();
    // Do something with this post.
endif;
?>

A consulta funciona como esperado se uma postagem em um dos termos da "temporada" for a mais recente, mas se uma postagem em "gravação de bônus" for a mais nova, ela carregará essa. Em outras palavras, meus parâmetros "tax_query" parecem não ter efeito na consulta. Eu não estou formatando o "tax_query" corretamente ou estou faltando alguma outra coisa?

Eu também tentei definir "tax_query" como abaixo:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
    'include_children' => true,
        'operator' => 'IN'
),

mas ainda estou recebendo o mesmo resultado.

    
por Josh Farneman 16.04.2012 / 17:52

1 resposta

36

O parâmetro tax_query é uma matriz de matrizes , não apenas uma array.

Isto:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
),

Deveria ser este:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),
    
por Chip Bennett 16.04.2012 / 17:58