在我的 Woocommerce 商店的主商店页面 (archive-product.php) 上,我希望能够显示所有产品,但按类别将它们分开。因此,我需要能够为每个产品类别创建一个循环。
作为视觉引用,这就是我想要实现的目标:for reference
每个灰色 block 代表一个新类别,并将循环显示该类别中的产品。
有办法实现吗?
最佳答案
正如您在评论中提到的,如果您不需要任何分页,要列出按类别领先的所有产品,您可以首先使用 get_terms() 循环浏览类别。函数并获取每次迭代所需的任何信息(例如:类别名称),然后为每个类别创建一个自定义查询并显示查询的产品,这样的操作将帮助您实现您想要执行的操作:
<?php
foreach( get_terms( array( 'taxonomy' => 'product_cat' ) ) as $category ) :
$products_loop = new WP_Query( array(
'post_type' => 'product',
'showposts' => -1,
'tax_query' => array_merge( array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'terms' => array( $category->term_id ),
'field' => 'term_id'
)
), WC()->query->get_tax_query() ),
'meta_query' => array_merge( array(
// You can optionally add extra meta queries here
), WC()->query->get_meta_query() )
) );
?>
<h2 class="category-title"><?php echo $category->name; ?></h2>
<?php
while ( $products_loop->have_posts() ) {
$products_loop->the_post();
/**
* woocommerce_shop_loop hook.
*
* @hooked WC_Structured_Data::generate_product_data() - 10
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
}
wp_reset_postdata(); ?>
<?php endforeach; ?>
关于php - Woocommerce 为每个类别提供单独的产品循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48012924/