我在WooCommerce中遇到产品循环问题。我的代码如下:
<?
$args = array(
'post_type' => 'product',
'posts_per_page' => 4,
'tax_query' => array(
array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
),
array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => 'NOT IN'
)
),
'suppress_filters' => 0
);
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post();
wc_get_template_part('content', 'product');
endwhile;
wp_reset_postdata();
?>
如您所见,循环显示了特色产品,但排除了缺货的产品。问题在于WC类“ first”和“ last”没有正确添加到结果中。
循环中的第一个产品获得类“ last”,而不是应有的第四个。这取决于我设置的特色产品。
有人经历过吗?
编辑:该问题似乎与在同一页面上有两个产品查询有关。特色查询显示3种产品,这使得待售产品的第一个产品具有最后一个类别。
答案 0 :(得分:1)
我只是遇到了同样的问题。我检查了WooCommerce的源代码,问题出在wc_get_loop_class()
方法中。
要解决此问题,只需致电:
wc_set_loop_prop( 'loop', 0 );
在每个产品查询之前。这样,内部产品循环计数器将正确重置。
答案 1 :(得分:0)
我使用这段脏代码删除了不必要的第一个/最后一个类:
function loop_columns() {
return 1000;
}
add_filter('loop_shop_columns', 'loop_columns', 999);