web-dev-qa-db-ja.com

wp_queryに複数のtax_queryを追加する引数

私は自分のカスタム投稿タイプのレシピを検索するカスタム検索システムを作成しています。検索では、ユーザーが選択した分類用語を検索します。

今ではハードコーディングすることができる方法のために私はある種のループによって引数を構築する必要があります。

ここに私が持っているものがあればコード例、

$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',
    ),
),
);

私が必要とするものは追加することです:

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

私が必要としているのは、人がループを選択して文字列を追加しながらargs配列を作成しようとしたときにプログラムでそれらを追加することですが、うまく動作させることができません。誰かがそれを行うことができる簡単な方法はありますか?

1
Ryan Bowden

IF条件を使ってパラメータを追加することができます。

$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