为什么我需要在single.php中使用wp循环

时间:2014-01-21 05:30:28

标签: wordpress wordpress-theming

在WordPress主题开发中,我们可以使用single.php来显示特定的单个帖子。

为此目的,通常的做法是:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
  <?php the_content();?>
<?php endwhile; ?>
<?php endif; ?>   

为什么我需要循环来显示单个帖子?任何人都可以给出一些正当的理由吗?

2 个答案:

答案 0 :(得分:3)

WordPress Loop实例化了the_title()the_content()others等功能。

换句话说,你的帖子在该循环中已加载,如果你在一个帖子上,循环就会消失一次。虽然有一个循环可能很奇怪,但它实际上非常有用。

WordPress使用template hierarchy,这是一种选择为给定帖子/页面加载哪个模板的方法。在single.php中,循环将运行一次。但是,如果您没有single.php文件,WordPress将使用index.php代替相同的帖子。

为了保持一致性,有一个适用于任意数量帖子的循环是有帮助的。另外,在你index.php中,你需要一个帖子的案例和多个帖子的另一个案例,并且保持一致的模板方法将是困难的。

答案 1 :(得分:2)

这是多年来杀了我的东西,我找到了答案: 不,您不需要在单个页面中使用LOOP,只需调用the_post()并且您需要所有数据

.... BUT ....

如果你不使用循环(while(have_posts())....)没有调用钩子“loop_end”,如果插件/进程在这个钩子上有任何动作,它将无法工作。因此,出于安全考虑,您应该使用循环。

另外,人们问我是否需要在循环之前检查是否存在:if(have_posts())?

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

不,你不需要检查

.... BUT ....

检查允许您在循环之前包含标题/标题,如果循环为空则不包含标题/标题。