El parámetro "tax_query" no funciona con WP_Query


17

Tengo un tipo de publicación personalizado llamado 'episodio'. Adjunto a 'episodio' tengo una taxonomía personalizada llamada 'video_type' que contiene dos términos: "bonus-footage" y "episode"; "episodio" contiene dos términos secundarios "temporada 1" y "temporada 2" (se agregarán otras temporadas en el futuro). Quiero obtener solo la publicación más reciente del tipo 'episodio', pero no incluir ninguna publicación del término 'material extra'. A continuación se muestra el código que estoy usando para esto:

<?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;
?>

La consulta funciona como se espera si una publicación en uno de los términos de 'temporada' es la más nueva, pero si una publicación en "bonus-footage" es la más nueva, entonces está cargando esa. En otras palabras, mis parámetros "tax_query" parecen no tener ningún efecto en la consulta. ¿No estoy formateando "tax_query" correctamente o me falta algo más?

También he intentado configurar "tax_query" como se muestra a continuación:

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

pero sigo obteniendo el mismo resultado.

Respuestas:


41

El tax_queryparámetro es una matriz de matrices , no solo una matriz.

Esta:

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

En cambio debería ser esto:

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

1
Gracias chip. Tengo curiosidad por saber por qué Wordpress lo ha construido de esta manera.
— Josh Farneman

3
Para que se puedan realizar múltiples consultas de impuestos, utilizando booleanos. Consulte la entrada del Codex vinculada, en la sección " Manejo de taxonomía múltiple ".
— Chip Bennett

1
¡Funcionó como un encanto para mí! ¡Gracias hombre, estaba golpeando mi cabeza contra la pared con este!
— Charles Blackwell

Parece que no puedo entender cómo traducir esto en un parámetro de URL y que WP_Query lo use realmente. Simplemente sigue siendo ignorado.
— realgeek
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.