反问题,POST_PER_PAGE等于X时的无限循环

时间:2012-03-14 作者:Johan Dahl

(更新)

我正在使用此查询将div循环到我的首页滑块。我使用计数器将4篇文章拆分为一个滑块,然后打开一个新的滑块等。还可以使用计数器将类设置为每四篇文章(以固定边距)。这非常有效,直到我想使用“post\\u per\\u page”参数。如果我把它设为-1或者可以被4除的值,我得到一个无限循环,它在所有帖子中无限循环。

所以很明显,我的问题与计数器有关。我自己不是一个编码员,在全能的互联网的帮助下,从不同的来源将这些代码组合在一起。

以下是我的完整查询:

<ul id="slider1">
<?php 
$args = array(
\'post_type\' => \'fastighet\',
\'posts_per_page\' => -1,
\'orderby\' => \'ASC\'
             );
?>
<?php $query = new WP_Query( $args ); ?> 
<?php if( $query->have_posts() ) : ?>
<li class="4slide">     
<?php $count = 0; ?>    
<?php while ($query->have_posts()) : $query->the_post(); $c++;
if( $c == 4) {
$style = \'thumbnail-fourth\';
$c = 0;
}
else $style=\'\'; ?> 

<div class="fastighet-thumbnail <?php echo($style) ?>" id="post-<?php the_ID(); ?>">
    <div class="fastighet-thumbnail-image">
        <a href="<?php the_permalink();?>"><?php the_post_thumbnail( \'admin-list-thumb\', array( \'alt\' => \'\'.get_the_title().\'\', \'title\' => \'\'.get_the_title().\'\' )); ?></a> 
    </div>

    <div class="fastighet-title">
        <a href="<?php the_permalink();?>"><?php the_title(); ?></a>   
    </div>                                  
</div> <!-- end .fastighet-thumbnail -->

<?php $count++; if ( ( $count % 4 ) == 0 && $query->have_posts() ) { ?> 
<!-- if counter equals 4 then close the slide and open a new one -->
</li>
<li class="4slide">
<?php } endwhile; ?>
</li>
<?php endif; ?>     
<?php wp_reset_query(); ?>  
</ul>
有人知道这有什么问题吗?我如何修改它以允许我像应该的那样使用“每页帖子”?

2 个回复
SO网友:englebip

删除$posts = get_posts($args) 线如果你打电话给WP_Query 之后

SO网友:Mridul Aggarwal

这已经很旧了,但我还是会为未来的访客添加答案

问题是$query->have_posts() 还要进行清理(&a);当没有要循环的帖子时,重置所有帖子。当在主while循环内调用此函数作为if条件时,它会重置POST&;然后,当在while条件中再次调用它时,它会从头开始再次启动循环。

要解决此问题,请使用$query->current_post + 1 != $query->post_count 在if条件内

结束

相关推荐

WordPress“the loop”中需要的简单Foreach循环帮助

我需要“循环”中的foreach循环This is my current code (index.php) :<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div><a href=\"<?php the_permalink(); ?>\" title=\"<?php get_the_title(); ?>\"> <?php the_title()