Consulta de impuestos avanzada

2

A continuación se encuentra mi consulta de impuestos, en el momento en que devuelve todas las publicaciones que tienen al menos uno de los términos especificados.

¿Hay alguna forma de que pueda devolver solo las publicaciones que tienen TODOS de los términos especificados?

[tax_query] => Array
    (
        [relation] => AND
        [0] => Array
            (
                [taxonomy] => services
                [field] => term_id
                [terms] => Array
                    (
                        [0] => 3
                        [1] => 10
                        [2] => 6
                        [3] => 9
                    )

                [operator] => IN
            )

        [1] => Array
            (
                [taxonomy] => awards
                [field] => term_id
                [terms] => Array
                    (
                        [0] => 13
                        [1] => 12
                    )

                [operator] => IN
            )

    )
    
pregunta Frank Martin 05.08.2011 - 13:42

2 respuestas

7

Pruebe [operator] => AND en ambos subarreglos. Creo que eso funcionará a partir de mi lectura de WP_Tax_Query::get_sql() .

    
respondido por el Chris Carson 05.08.2011 - 13:51
0

Alternativamente, puede dividir las dos consultas en cinco (dependiendo de cómo obtenga sus condiciones, incluso podría ser más fácil de codificar).

Sería interesante saber si hay alguna diferencia de rendimiento entre las dos construcciones. (@Frank Martin, o cualquiera, sería genial si pudieras compartir el SQL real generado de cada manera; establezco esta respuesta como un wiki de la comunidad).

[tax_query] => Array
(
    [relation] => AND
    [0] => Array
        (
            [taxonomy] => services
            [field] => term_id
            [terms] => Array
                (
                    [0] => 3
                )

            [operator] => IN
        )
    [1] => Array
        (
            [taxonomy] => services
            [field] => term_id
            [terms] => Array
                (
                    [0] => 10
                )

            [operator] => IN
        )
    [2] => Array
        (
            [taxonomy] => services
            [field] => term_id
            [terms] => Array
                (
                    [0] => 6
                )

            [operator] => IN
        )
    [3] => Array
        (
            [taxonomy] => services
            [field] => term_id
            [terms] => Array
                (
                    [0] => 9
                )

            [operator] => IN
        )

    [4] => Array
        (
            [taxonomy] => awards
            [field] => term_id
            [terms] => Array
                (
                    [0] => 13
                )

            [operator] => IN
        )
    [5] => Array
        (
            [taxonomy] => awards
            [field] => term_id
            [terms] => Array
                (
                    [0] => 12
                )

            [operator] => IN
        )

)

.

Como descubrí mientras trabajaba en mi reciente pregunta de taxonomía avanzada, Cómo pasar parámetros de URL para consultas de taxonomía avanzadas con múltiples términos para una taxonomía personalizada WP hará exactamente eso (al menos en 3.1.4) si pasas la consulta a través de la URL.

    
respondido por el marfarma 13.04.2017 - 14:37