我写了这个PHP代码来放一个wordpress页面模板:
<?php
query_posts('showposts=10&cat=7');
while (have_posts()) : the_post();
?>
<li class="img-slider">
<?php the_content(); ?>
</li>
<?php endwhile; ?>
当我查看页面时,我看不到任何结果,浏览器的右栏继续减少。我知道代码创建了一个无限循环。 我错在哪里?
由于
答案 0 :(得分:1)
首先,您不应该使用query_posts
。它对于简单的循环来说太具有侵略性,并且与整个WP_Query混淆。 showposts
也应为posts_per_page
。
其次,如果没有更多上下文,很难衡量这个问题是什么。也许将整个页面粘贴,并将其编辑到您的问题中。我的猜测是一个循环中的循环,应该停在100个帖子。 (10 X 10)但如果它在任何其他地方重置,如果很可能无限!
使用此代码来创建循环:
$custom_query = new WP_Query( 'posts_per_page=10' );
if($custom_query->have_posts()) :
while ( $custom_query->have_posts() ) : $custom_query->the_post();
//global $post; // for stuff like $post->post_name
// Post stuff here
// the_title();
endwhile;
endif;
// Reset Post Data
wp_reset_postdata();
查看WordPress codex了解更多详情。 http://codex.wordpress.org/Class_Reference/WP_Query#Parameters
答案 1 :(得分:0)
您应该在循环中使用if
语句:
<?php
query_posts('showposts=10&cat=7');
if ( have_posts() ): while ( have_posts() ) : the_post();
?>
<li class="img-slider">
<?php the_content(); ?>
</li>
<?php endwhile; endif; ?>
答案 2 :(得分:0)
如果没有进一步的信息,我会说在while
语句的每个循环中,函数返回数据的第一行?因此,每次while循环执行时,您都会再次调用该函数,它会一遍又一遍地返回相同的行,而不会实际迭代结果集。