我有一个产品循环在我的主页上显示8个产品。它只是一个循环,从产品列表的末尾开始到开头,显示我的所有产品,直到它到达第8个。当我提出一个条件语句,我只想要显示某些标题的产品时,它只会选择那些,但只能从没有条件语句的情况下显示的产品列表中选择。
例如,考虑商店中所有产品的清单:
[列表的开头] 'Globus 1' 'Globus 2' [......更多产品...] 'Kompozycja 6' 'Kompozycja 7' [列表的末尾]
我的循环抓取最后一项到第一项的项目,并将显示的产品数量限制为8.我已经放置了一个条件语句,我只想显示'Kompozycja 7'并且它有效。但是,如果我指定的名称不是列表中最后8个项目之一,那么它将无效。例如,我将选择'Globus 1'。它不会显示,因为它不属于列表中的最后8个项目。
这是我的循环:
$args = array(
'post_type' => 'product',
'posts_per_page' => 8
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
if (get_the_title($post->ID) == 'Kompozycja 7' || get_the_title($post->ID) == 'Kompozycja 2') {
woocommerce_get_template_part( 'content', 'product' );
}
endwhile;
} else {
echo __( 'No products found' );
}
有人可以帮我吗?
答案 0 :(得分:0)
您的问题是您在条件循环之前限制了帖子数量。
第$loop = new WP_Query( $args );
行返回最多8个结果,供循环迭代。
您可以返回整套结果并使用计数器自行限制:
$args = array(
'post_type' => 'product',
'posts_per_page' => -1 //return all posts
);
$loop = new WP_Query( $args );
//create a counter
$count=0;
if ( $loop->have_posts() ) {
//loop whilst we have posts and we still require more
while ( $loop->have_posts() && $count < 8 ) : $loop->the_post();
if (get_the_title($post->ID) == 'Kompozycja 7' || get_the_title($post->ID) == 'Kompozycja 2') {
woocommerce_get_template_part( 'content', 'product' );
//increment count - if it reaches 8 we quit the loop
$count++;
}
endwhile;
} else {
echo __( 'No products found' );
}
虽然如果你有成千上万的产品,这将会很慢。您可以传递给WP_Query,以便在数据库中执行此检查。