我想从WP\\u查询中获得给定类别的产品列表,但它无法正常工作。
我做到了:
$args = array(
\'post_type\' => \'product\',
\'product_cat\' => 17,
);
$products = new WP_Query($args);
但这又回来了
every 来自我的店铺的产品。。。我还尝试了“cat”、“category”和“category\\u name”属性,得到了相同的结果。
我已尝试使用tax\\u查询:
$args = array(
\'post_type\' => \'product\',
\'tax_query\' => array(
\'taxonomy\' => \'product_cat\',
\'terms\' => 17
),
);
$products = new WP_Query($args);
这也会回来
every products我还尝试了“cat”、“category”和“category\\u name”,得到了相同的结果。
我已经设法使用以下代码从给定类别中获取常规帖子。
$args = array(
\'post_type\' => \'post\',
\'cat\' => 22
);
$posts = new WP_Query($args);
还有几件事:
我确信我有正确的类别id。税务查询也适用于这些帖子编辑:tax_query
返回所有产品,忽略我的product_cat
属性
几天来,我一直在寻找解决类似问题的方法,在stack和其他网站上尝试了所有可能的解决方案,但都没有成功。。。为什么它不适用于产品?
编辑:代码snipet withtax_query
错了,所以我改了。
编辑2:我尝试了一些新东西,下面是总结:
禁用所有自定义挂钩:相同的结果实例化了WC_Product
手动将实际产品的id作为参数。这表明category_ids
属性为空,即使产品在管理面板上有类别。。。类别分类页面也显示了正确的内容当我这样做的时候var_dump(get_the_terms($postID, \'category\'));
在一篇常规帖子中,它运行良好,编辑3:-禁用所有插件,但Woocommerce的结果相同…-当我这样做的时候var_dump(get_post_types());
, 产品帖子类型不显示。很自然,当我这样做的时候var_dump(get_object_taxonomies(\'product\'));
, 它返回一个空数组。
最合适的回答,由SO网友:Maayam 整理而成
最后,我的主要问题是,我正在将代码直接执行到函数中。php(用于测试目的)。代码在woocommerce初始化之前执行,然后无法正确获取产品。尽管如此,我无法让Wp\\u查询只返回一个给定类别的产品。它仍在返回我数据库中的所有产品,所以我找到了一种解决方法。
$category; //this is the var containing the wanted category slug
$productPosts = new WP_Query(array(
\'post_type\' => \'product\'
));
//I could have used $productPosts->have_posts() here but I decided not to use it in my particular context
foreach ($productPosts->posts as $p) {
$currentProduct = new WC_Product_Variable($p->ID);
//I can only access category ids with WC_Product so I\'m building an array of category slugs instead
foreach ($currentProduct->get_category_ids() as $catId) {
if( $term = get_term_by( \'id\', $catId, \'product_cat\' ) ){
array_push($categories, $term->name); //push it
}
}
if(in_array($category, $categories)){ //if the current currentProduct has the asked category,
//push it in $currentProduct into $products array
array_push($products, $currentProduct);
}
else{//current product doesn\'t have asked category
}
} //end foreach, we now have all products of asked category... in $products array
这很有效。。。但真的,感觉不对。我正在对要包含在最终数组中的每个产品进行多个数据库查询。。。woocommerce就是这样运作的吗?此外,我不确定我应该如何分页这些数据,但无论如何,这不是我关心的问题。。。
一定有更好的方法,但我现在找不到。。。