web-dev-qa-db-ja.com

高度な税クエリ

以下は私の税務照会です。現時点では、これは指定された用語の少なくとも1つを持つすべての投稿を返します。

指定した用語のALLを含む投稿のみを返すようにする方法はありますか。

[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
            )

    )
2
Frank Martin

両方のサブ配列で[operator] => ANDを試してください。私はWP_Tax_Query::get_sql()を読んだことでうまくいくと思います。

7
Chris Carson

あるいは、2つのクエリを5つに分割することもできます(条件をどのように取得しているかによっては、コーディングが簡単になる場合もあります)。

2つの構成の間にパフォーマンスの違いがあるかどうかを知ることは興味深いでしょう。 (@ Frank Martin、または他の誰かが、それぞれの方法で生成された実際のSQLを共有できれば素晴らしいでしょう。私はこの答えをコミュニティWikiとして設定しました。)

[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
        )

)

最近の高度な分類クエリの質問で作業中に発見したように、 1つのカスタム分類に対して複数の用語を含む高度な分類クエリのURLパラメータを渡す方法 WPはちょうどそれをするでしょう(少なくとも3.1.4の下で)。

0
marfarma