web-dev-qa-db-fra.com

Passer un tableau de termes de taxonomie à wp_query

J'essaie de compiler un tableau de taxonomies et de termes à passer à wp_query, mon tableau ressemble à ceci ...

Array
(
    [0] => Array
        (
            [taxonomy] => color
            [field] => term_id
            [terms] => Array
                (
                    [0] => 15
                )

        )

    [1] => Array
        (
            [taxonomy] => shape
            [field] => term_id
            [terms] => Array
                (
                    [0] => 87
                )

        )

    [2] => Array
        (
            [taxonomy] => weight
            [field] => term_id
            [terms] => Array
                (
                    [0] => 3
                    [1] => 54
                )

        )

    [3] => Array
        (
            [taxonomy] => rating
            [field] => term_id
            [terms] => Array
                (
                    [0] => 87
                    [1] => 88
                )

        )

)

J'essaye de le passer à wp_query comme ceci ...

$args = array(
    'post_type' => 'post',
    'relation' => 'OR',
    'tax_query' => $myarray,
);
$query = new WP_Query( $args );

Cela ne me donne aucun résultat, où vais-je?

1
fightstarr20

Le problème est l'ambiguïté, vous ne pouvez pas simplement mettre 'relation' => 'OR' dans la liste des paramètres principaux, car comment WP_Query savoir si c'est pour le tax_query et non le meta_query?

Pour savoir comment il est censé fonctionner, et où va le paramètre relation, nous devons nous référer à les documents officiels pour WP_Query qui nous donne cet exemple:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => array( 'quotes' ),
        ),
        array(
            'taxonomy' => 'post_format',
            'field'    => 'slug',
            'terms'    => array( 'post-format-quote' ),
        ),
    ),
);
$query = new WP_Query( $args );

La configuration peut être aussi simple que:

$myarray['relation'] = 'OR'; // untested
3
Tom J Nowell