<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
....
<?php endwhile; endif; ?>
可以理解上面的代码。
1,我可以删除if和while条件吗?直接使用<?php the_post();?>
。
2,我觉得if (have_posts())
与while (have_posts())
相同。它是否冗余?
答案 0 :(得分:3)
#1 :在没有循环的情况下调用the_post
只会让您显示一个帖子。这可能适用于单帖页面,例如,while
循环经常被省略:
<?php
// single.php
if ( have_posts() ):
the_post();
?>
<p><?php the_content(); ?></p>
<? else: ?>
<p>No post found.</p>
<? endif ?>
#2 :您说得对 - 您发布的代码段在if
和while
的组合中是多余的。
然而,在大多数主题中,这是用法:
<?php
if ( have_posts() ):
while ( have_posts() ): the_post();
?>
<div class="post"><?php the_content(); ?></div>
<?php endwhile; else: ?>
<p>No posts found.</p>
<?php endif; ?>
在这种情况下使用if
语句可以让您在没有帖子的情况下显示内容。如果我们只是在该代码中使用while
循环,那么没有任何帖子的页面就不会输出任何内容。
答案 1 :(得分:1)
while(have_postS())
将自动评估have_postS()
<{1}}
但只要它是if(have_postS())
(因为它是一个循环)它就会继续,如果你必须循环和一些终止循环的机制,那么使用true
否则
一次while
会做得更好。
答案 2 :(得分:1)
我不知道Wordpress,但从它的外观来看,has_posts()返回一个truthy或falsy值。 while
循环仅在将truthy值作为条件传递时执行,所以是的,您可以将其减少为whoopin 3行:
<?php while (have_posts()) : the_post(); ?>
....
<?php endwhile;?>
编辑:将此作为另一个示例,说明为什么复制粘贴代码不好......