php - Woocommerce 为每个类别提供单独的产品循环

标签 php wordpress woocommerce

在我的 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/

相关文章:

php - 从 kml 文件计算地面覆盖 Angular 的纬度/经度

php - 为什么 Apache 不能在 XAMPP 安装中启动?

php - 在 WordPress 中将选项从后端传递到前端的最佳方法

php - WordPress - 将第一张图片设为我的特色图片

php - 如何使用 php 和 mysql 获取下拉菜单中项目的详细信息

javascript - HTML - 如何制作 "Read More"按钮

php - 需要删除常见问题解答之间多余的空白。使用 CSS 和 Bootstrap

php - Woocommerce 订单状态 Hook 不适用于 PayPal 交易

php - 更改 WooCommerce 结帐国家/地区字段默认选项显示标签

php - Woocommerce 在感谢页面获取自定义选择字段值