如何获取WooCommerce指定分类下的10个产品?求对应代码
获取WooCommerce指定分类下的10个产品
嘿,刚好我熟悉WooCommerce和WordPress的查询逻辑,这就给你一套和你现有文章列表代码风格完全匹配的方案!
方案1:和你现有代码结构一致的get_posts写法
这个版本和你用来获取文章的代码几乎一模一样,只是调整了查询类型和分类筛选规则:
<?php // 替换这里的分类ID或slug为你的目标产品分类 $products = get_posts( array( 'post_type' => 'product', // 指定查询WooCommerce产品 'numberposts' => 10, // 要获取的产品数量 'orderby' => 'date', // 按发布日期排序 'order' => 'DESC', // 最新的在前 'tax_query' => array( array( 'taxonomy' => 'product_cat', // WooCommerce产品分类的 taxonomy 'field' => 'term_id', // 用分类ID筛选,也可以改成'slug'用别名筛选 'terms' => 12, // 替换成你的产品分类ID,比如用slug的话改成'your-category-slug' ), ), ) ); if ( $products ) : ?> <ul> <?php foreach ( $products as $post ) : setup_postdata( $post ); ?> <li> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <i class="circle"></i><?php the_title(); ?> <!-- 可选:添加产品价格显示,去掉注释即可 --> <!-- <span class="product-price"><?php echo wc_price( get_post_meta( get_the_ID(), '_regular_price', true ) ); ?></span> --> </a> </li> <?php endforeach; ?> </ul> <?php wp_reset_postdata(); // 必须重置,避免影响页面其他内容 ?> <?php endif; ?>
方案2:更灵活的WP_Query写法
如果你之后需要扩展功能(比如分页、筛选更多条件),WP_Query会更方便,逻辑和上面一致,但写法略有不同:
<?php $args = array( 'post_type' => 'product', 'posts_per_page' => 10, 'orderby' => 'date', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => 12, ), ), ); $products_query = new WP_Query( $args ); if ( $products_query->have_posts() ) : ?> <ul> <?php while ( $products_query->have_posts() ) : $products_query->the_post(); ?> <li> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <i class="circle"></i><?php the_title(); ?> </a> </li> <?php endwhile; ?> </ul> <?php wp_reset_postdata(); ?> <?php endif; ?>
关键参数说明
post_type => 'product':告诉WordPress我们要查询的是WooCommerce的产品类型,而不是普通文章tax_query:专门用来筛选自定义分类法(这里是WooCommerce的产品分类product_cat),你可以根据需求选择用分类ID或slug来定位wp_reset_postdata():一定要加上,它会重置全局的$post变量,避免和页面其他内容的查询冲突
内容的提问来源于stack exchange,提问作者Bahadori
相关产品推荐
相关产品推荐

