Soporte » WordPress Avanzado » Intersección en tax_query

  • Resuelto Aitor Méndez

    (@aitormendez)


    Hola, necesito hacer una tax_query que recoja los posts que tengan:

    el «term1» de la «taxonomía1»

    Y

    el «term2» de la «taxonomía2»

    Es decir, cada post recogido debe tener los dos terms (uno de cada taxonomía). Si hago esto:

    'tax_query'              => [
      'relation' => 'AND',
      [
        'taxonomy'         => 'taxonomy1',
        'terms'            => 'term1',
      ],
      [
        'taxonomy'         => 'taxonomy2',
        'terms'            => 'term2',
      ],
    ],

    Recojo todos los posts que tengan uno u otro term. ¿Cómo hago para recoger sólo los que tienen ambos terms? Gracias!

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Moderador almendron

    (@almendron)

    Iniciador del debate Aitor Méndez

    (@aitormendez)

    Sí, lo he leído antes de preguntar. Justo este ejemplo de intersección no viene. Tiene que ser recoger los posts que tengan un term de una taxonomía y otro term de otra taxonomía.

    Moderador almendron

    (@almendron)

    hay algún que otro ejemplo. Uno de ellos es

    $args = array(
        'post_type' => 'post',
        'tax_query' => array(
            'relation' => 'AND',
            array(
                'taxonomy' => 'movie_genre',
                'field'    => 'slug',
                'terms'    => array( 'action', 'comedy' ),
            ),
            array(
                'taxonomy' => 'actor',
                'field'    => 'term_id',
                'terms'    => array( 103, 115, 206 ),
                'operator' => 'NOT IN',
            ),
        ),
    );
    $query = new WP_Query( $args );
    Iniciador del debate Aitor Méndez

    (@aitormendez)

    Pero ese ejemplo no se ajusta al criterio que necesito ¿no? Es posible que yo no o esté entendiendo bien, no lo sé. Ahora mismo estoy bastante despistado.

    Iniciador del debate Aitor Méndez

    (@aitormendez)

    Vale, ya está solucionado. Como me han apuntado aquí:

    https://wordpress.stackexchange.com/questions/359791/simple-tax-query-intersection/

    1) el código que muestro se supone que debería comportarse como a mí me interesa.

    2) tax_query, por defecto, se basa en el ID y yo lo estaba basando en el slug. Por tanto, necesita un 'field' => 'slug'

    Por tanto, esta es la solución:

    'tax_query' => [
      'relation' => 'AND',
      [
        'taxonomy'         => 'link-category',
        'terms'            => $link,
        'field'            => 'slug'
      ],
      [
        'taxonomy'         => 'despacho',
        'terms'            => $despacho,
        'field'            => 'slug'
      ],
Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘Intersección en tax_query’ está cerrado a nuevas respuestas.