упростить, если в цикле списка в wordpress

<?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()) Это избыточность?

Related of "упростить, если в цикле списка в wordpress"

# 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 в этом коде, страницы без каких-либо сообщений не выдавали бы ничего.

while(have_postS()) будет автоматически оценивать have_postS() как if(have_postS())

но он будет продолжаться до тех пор, пока он true (поскольку это цикл), если вам нужно зациклиться и какой-то механизм, который завершает цикл, тогда используйте while

еще

на этот раз, if будет лучше.

Я не знаю WordPress, но по внешнему виду has_posts () возвращает либо правдивое, либо фальшивое значение. Цикл while выполняется только в том случае, если в качестве условия передается истинное значение, поэтому да, вы можете уменьшить его до трех строк:

 <?php while (have_posts()) : the_post(); ?> .... <?php endwhile;?> 

Edit: Поставьте это еще одним примером того, почему код для копирования вставки плохо …