我已经编写了这段代码,但却无法理解为什么它会触发无限循环。我一直在寻找类似的问题但没有点击我。谁能请一些亮点?
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => 3
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : ?>
<div class="news_item">
<img src="<?php echo get_template_directory_uri(); ?>/img/dummy.png">
<h3><a href="#">Government introduces X Y Z for lorem ipsum dolor esters.</a></h3>
</div>
<?php endwhile; endif;
wp_reset_postdata(); ?>
答案 0 :(得分:2)
你忘记在The Loop
内增加post迭代器。这个迭代器指向下一篇文章。由于您没有通过在循环中调用the_post()
来递增它,have_posts()
将始终返回true
。
此处显示了如何编程The Loop
以及如何使用the_post()
和have_posts()
的基本示例:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
一些不错的Markup来到这里......
<?php endwhile; else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?>
(取自此处:Wordpress.com, The Loop , 1 - 使用循环,Last time accessed at 30.12.2015)
另外注明the_post()
:
在The Loop中迭代post索引。设置下一篇文章 帖子,将'in the loop'属性设置为true。
(取自此处:Wordpress.com,功能参考/帖子,last time accessed at 30.12.2015)