2014-01-21 45 views
6

一个WP循环在wordpress主题的发展,我们可以用single.php中显示特定的单篇文章。 为了这个目的,通常的做法是为什么我需要在single.php中

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

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

+0

请参阅https://wordpress.stackexchange.com/questions/198704/should-i-use-loop-in-the-single-php-file –

回答

2

WordPress Loop例示了一些功能,如the_title(),the_content()others

换句话说,您的帖子是在该循环中加载,并且如果您处于单个帖子中,循环会通过一次。虽然循环可能很奇怪,但它实际上非常有用。

WordPress使用一个template hierarchy,这是选择的方式来加载特定职位/页的模板。在你的single.php,循环将运行一次。但是,如果您没有single.php文件,则WordPress将使用index.php替代该文章。

为了一致性起见,具有环,其适用于任何数量的帖子的是有帮助的。否则,在您index.php中,您将需要一个帖子和一个多个帖子的案例,并保持一致的模板方法将是困难的。

+12

你错了。 'the_post()'调用完成你所说的。不是整个循环。 另外,由于存在'single.php',我们不在'index.php'中,因此我们并不需要这个循环。只需调用'the_post()' – Odys

0

这东西害了我多年,我找到了答案: 不,你并不需要使用单页的循环,你只需要调用the_post(),你都需要数据

.... BUT .... 

如果您不使用循环(while(have_posts())....),则不会调用钩子“loop_end”,如果插件/进程对此钩子有任何操作,则它将不起作用。所以出于安全原因,你应该使用循环。

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

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

不,你不需要检查

.... BUT .... 

检查允许包括页眉/循环之前的标题,而不是让他们如果循环是空的。