为什么在wordpress循环中没有if语句

时间:2019-11-28 09:58:52

标签: php wordpress wordpress-theming

wordpress循环如下所示(来自docs)

<?php 
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post(); 
        //
        // Post Content here
        //
    } // end while
} // end if
?>

在执行if ( have_posts() )之前检查while ( have_posts() )对我来说似乎很奇怪。毕竟,在while循环的第一次迭代中进行了完全相同的检查。

我认为if语句很有用的唯一情况是执行else语句以显示一些条件文本,指示不存在帖子。

是否有理由包括此if语句,但实际上并没有使用? (我问是因为它对我来说似乎是多余的代码,但是the docs指定我应该使用它)

2 个答案:

答案 0 :(得分:0)

在我的示例中,if语句似乎是多余的,但是总的来说,不建议省略if语句。

if语句通常用于:

  • 输出类似no posts found之类的字样,以表明所涉及的类别未分配任何文章。
  • 决定是否在文章前后输出周围的html(如ul)。

更多信息,请访问:https://wordpress.stackexchange.com/questions/117219/why-should-i-put-ifhave-posts-is-whilehave-posts-not-enough

如果添加了新的钩子怎么办?

不使用if语句的另一个可能的问题是,如果wordpress团队决定添加一个新的钩子,该钩子会在第一个$wp_query->have_posts()调用时触发,那么它将在错误的时间触发。并且,如果这导致意外行为,则可能是您未正确遵循规范所致。

其他开发人员希望看到wordpress循环的特定结构

我想其他开发人员希望看到整个wordpress循环。因此,让他们搜索不存在的if语句可能不是一个好主意。

答案 1 :(得分:0)

当我们在循环中没有帖子时想要添加一些“ else”语句时,将使用此处的if语句

else {
    echo 'no posts found!';
}