web-dev-qa-db-fra.com

wp_query args ajoutant plusieurs tax_query

je crée un système de recherche personnalisé qui recherche dans mes recettes de type de message personnalisé. Dans la recherche, il recherche les termes de taxonomies que les gens ont sélectionnés.

Maintenant, en raison de la façon dont il peut coder durement tout cela, j'ai besoin de construire les arguments par une boucle quelconque.

Voici un exemple de code si ce que j'ai,

$args = array(
'post_type'      => get_post_type(),
'orderby'        => 'menu_order',
'order'          =>  'ASC',
'posts_per_page' => -1,
'no_found_rows'  => true,
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'product_category',
        'field'    => 'slug',
        'terms'    => array($category->slug), //Supply the current product_category terms
    ),
    array(
        'taxonomy' => 'product_locations',
        'field'    => 'slug',
        'terms'    => array($current_location), //Add the product_locations term
        'operator' => 'IN',
    ),
),
);

Ce dont j'ai besoin, c'est d'ajouter:

array(
        'taxonomy' => 'product_category',
        'field'    => 'slug',
        'terms'    => array($category->slug), //Supply the current product_category terms
    ),

Ce dont j'ai besoin, c'est de les ajouter par programme quand une personne sélectionne. J'ai essayé de construire le tableau args avec des boucles et d'ajouter des chaînes ensemble, mais je ne parviens pas à le faire fonctionner. Quelqu'un a-t-il un moyen rapide de le faire?

1
Ryan Bowden

Vous pouvez utiliser des conditions IF pour ajouter les paramètres,

$args = array(
'post_type'      => get_post_type(),
'orderby'        => 'menu_order',
'order'          =>  'ASC',
'posts_per_page' => -1,
'no_found_rows'  => true,
'tax_query' => array(),
);

if(condition){
    $args['tax_query'] = array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'product_category',
            'field'    => 'slug',
            'terms'    => array($category->slug), //Supply the current product_category terms
        ),
        array(
            'taxonomy' => 'product_locations',
            'field'    => 'slug',
            'terms'    => array($current_location), //Add the product_locations term
            'operator' => 'IN',
        ),
    ),
}
else{
     $args['tax_query'] = array(
        array(
            'taxonomy' => 'product_category',
            'field'    => 'slug',
            'terms'    => array($category->slug), //Supply the current product_category terms
        ),
     );
}
0
WisdmLabs