web-dev-qa-db-ja.com

空のtax_query配列は空の配列を返します

Tax_query ['terms']が空のときにすべての投稿を返します。

$args = array(
        'post_type' => 'product',
        'posts_per_page' => 15,
        'paged' => $paged,
        'post__not_in' => $exclude,
        's' => $filter,
        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'field'    => 'term_id',
                'terms'    => array(),
            ),
        ),
    );

残念ながら、私は問題の解決策を見つけられませんでした。ご覧のとおり、配列は空です。'terms' => array(),butすべての投稿を返します。それを達成するにはどうすればよいですか。

1
user1452062

@Miloによってすでに示唆されているように、あなたのtax_queryを追加する前にあなたが用語を持っているかどうかチェックしてください

以下を試すことができます。(短い配列構文のためPHP 5.4以降が必要です。必要に応じて古い構文に戻してください

$args = [
    'post_type' => 'product',
    'posts_per_page' => 15,
    'paged' => $paged,
    'post__not_in' => $exclude,
    's' => $filter,
];

// Append our tax-query if we have terms. Make sure it is a valid string or array
$term = 'DEFINE YOUR TERM HERE';
if ( $terms ) {
    $args['tax_query'] = [
        [
            'taxonomy' => 'product_cat'
            'terms' => $terms,
        ]
    ];
}

$q = new WP_Query( $args );
4
Pieter Goosen