在 WooCommerce 中使用 AND 关系对 2 个类别术语进行税务查询

Tax query using AND relation for 2 category terms in WooCommerce

我想得到我所有的产品,在类别 A + B 中,我用 tax_query 尝试过,但直到现在我没有得到预期的结果。

$args = array(
      'posts_per_page' => -1,
      'post_type' => 'product',
      'tax_query' => array(
         'relation' => 'AND',
          array(
            'taxonomy' => 'product_cat',
            'field'    => 'term_id',
            'terms'    => $_GET["terms"],
          )
        ),
  );

通过该查询,我得到了 A 或 B 中的产品...

已更新

假设url参数传递有点像?terms[0]=15&terms[1]=22(其中1522是术语Id), 所以 $_GET["terms"] 给出了一个术语 ID 数组,那么你将使用以下内容:

$tax_query = array(); // Initializing

if( isset($_GET['terms']) && is_array($_GET['terms']) ) {
    $terms_ids = wc_clean($_GET['terms']); 

    $tax_query = count($terms_ids) > 1 ? array('relation' => 'AND') : array();

    // Loop through terms Ids
    foreach( $terms_ids as $term_id ) {
        $tax_query[] = array(
            'taxonomy' => 'product_cat',
            'field'    => 'term_id',
            'terms'    => $term_id,
        );
    }
}

$args = array(
    'posts_per_page' => -1,
    'post_type'      => 'product',
    'post_status'    => 'publish',
    'tax_query'      => $tax_query
);

已测试并有效。