我正在尝试设置一个自定义循环来循环分配给产品类别的产品,但它似乎不起作用。
我的类别设置:
厂家直销 -FD1 -FD2 -FD3
我希望我的循环显示属于 ID 为 84 的 Factory Direct 任何子类别的产品。
我尝试在模板中对此进行编码:
<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 更改为特定类别(例如 FD1,其 ID 为 24),但它仍然不起作用。
有什么想法/建议吗?
如果我删除 WP_Query 中的 cat 参数,它会循环遍历产品,但我无法指定我的循环。
谢谢!
最佳答案
您需要首先获取该类别的所有子级,并将它们包含在查询的 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-->
关于php - WordPress/WooCommerce : Cannot Specify Product Category In WP_Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18861462/