我正在尝试设置一个自定义循环,循环遍历分配到产品类别的产品,但它似乎不起作用。
我的类别设置:
Factory Direct - FD1 - FD2 - FD3
我希望我的循环显示属于Factory Direct的任何ID为84的儿童类别的产品。
我尝试在模板中对此进行编码:
<ul class="products factoryloop">
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
'cat' => 84
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
woocommerce_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul><!--/.products-->
我尝试将ID从84更改为特定类别(例如ID为24的FD1示例),但它仍然无效。
有任何想法/建议吗?
如果我在WP_Query中删除了cat参数,它会遍历产品,但是我无法指定我的循环。
谢谢!
答案 0 :(得分:1)
您需要先获取该类别的所有孩子,并将其包含在查询的cat
参数中。
<ul class="products factoryloop">
<?php
$parentCat = 84;
$children = get_categories(array('child_of'=>$parentCat));
$childs = array($parentCat);
foreach($children as $child){
$childs[] = $child->cat_ID;
}
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
'cat' => implode(',', $childs);
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
woocommerce_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul><!--/.products-->
答案 1 :(得分:1)
这就是我使用 query_posts 的方式,你应该用 WP_Query 做同样的事情。
function getCategoryByParent ($id) {
$args=array(
'orderby' => 'name',
'parent' => $id,
'hide_empty' => false,
'taxonomy' => 'product_cat',
'order' => 'ASC',
);
$categories=get_categories($args);
return $categories;
}
$cats = getCategoryByParent(84);
query_posts( array( 'paged' => $paged, 'posts_per_page' => 9, 'post_type' => 'product', 'post_status' => 'publish' , 'taxonomy' => 'product_cat', 'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats
))));
希望你觉得它有用,Asaf。