大家好,我想知道具有某些自定义属性的特定类别是否有产品,但我不知道如何使用此功能来检查它是否有
$isset_products_in_category = new WP_Query(
array(
'post_type' => 'product',
'posts_per_page' => -1,
'relation'=>'AND',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => '5',
'operator' => 'IN',
),
array(
'taxonomy' => 'pa_color',
'field' => 'term_id',
'operator' => 'IN',
'terms' => '2',
),
),
'ignore_stickie_posts' => true,
'fields' => 'ids',
)
);
'relation' => 'AND'
应该是 tax_query
中 WP_Query()
数组的一部分(它定义了 tax_query
中数组之间的 关系)。修改后的代码示例:
<?php
$wp_query = new WP_Query(
array(
'post_type' => 'product',
'posts_per_page' => -1,
'tax_query' => array(
'relation'=>'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => '5',
'operator' => 'IN',
),
array(
'taxonomy' => 'pa_color',
'field' => 'term_id',
'terms' => '2',
'operator' => 'IN',
),
),
'ignore_sticky_posts' => true,
'fields' => 'ids',
)
);
// Do something with the result of the query
$isset_products_in_category = $wp_query->post_count > 0;
var_dump($isset_products_in_category); // will output bool(true) or bool(false).
您的 WP_Query 代码中有两个关键问题
i) 关系放置不正确
“relation”=>“AND”必须放置在“tax_query”数组内,而不是放在顶层。
2) 参数键中的拼写错误
“ignore_stickie_posts”是一个拼写错误;它应该是“ignore_sticky_posts”。 'relation' 必须移至tax_query 下。
更正以下代码
$isset_products = new WP_Query(
array(
'post_type' => 'product',
'posts_per_page' => -1,
'ignore_sticky_posts' => true,
'fields' => 'ids',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => 5,
'operator' => 'IN',
),
array(
'taxonomy' => 'pa_color',
'field' => 'term_id',
'terms' => 2,
'operator' => 'IN',
),
),
));
然后检查该类别是否有产品或为空,如下所示
if ($isset_products->have_posts()): { echo 'somthing'; } else{ echo 'Not found'; }
别忘了
wp_reset_postdata();