我是否需要在页面上使用“循环”?


8

我正在写我的第一个WordPress主题,并且对页面模板中The Loop的使用有疑问。我看过的所有页面模板基本上都遵循相同的模式(例如“十二十二”中的示例):

<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>

但是一个页面只有一个相关的帖子,因此遍历这些帖子似乎是不必要的。我的页面模板更具可读性,并且似乎可以正常工作:

<?php
the_post();
the_title('<h1>', '</h1>');
the_content();
?>

这是一个好习惯吗?有没有缺点?

Answers:


5

根据主题指南,即使在单个模板上也应使用完整循环。

全循环必须在所有模板中使用。仅调用the_post()类似single.php或的模板page.php是不够的。

因此,是的,使用完整循环是一种最佳实践。


9

我看到的唯一潜在(编辑:功能)问题是,loop_end如果您have_posts()在上一个操作之后未调用,则不会调用该操作the_post(),因此与该操作相关的任何操作都不会运行。

在实践中,我一直在定制客户端主题中这样做,并且从未遇到过问题,但这取决于可以使用哪些插件,以及它们是否钩住任何东西loop_end


根据主题指南,即使在单个模板上也应使用完整循环。“必须在所有模板中使用完整循环。仅在诸如single.php或page.php之类的模板中调用the_post()是不够的。” 所以是的,使用完整循环是最佳实践。
Dave Romsey 2013年

您可能应该将其添加为答案。如果希望您的主题被接受并在WP.com或org上分发,则很有必要。
米洛

好,谢谢。我会。我以为您可以用答案来覆盖它,所以我想只用那个花絮来补充它。我从未想过您提出的loop_end操作点。好电话那里。
Dave Romsey

很好的问题,我不赞成与文档相提并论,在所有模板文件中循环都是必须的,但是II认为两个答案都不能解释为什么。特别说明为什么必须在page.php内运行the_post(),因为此文件根本不显示任何帖子!
陀螺仪'18 -10-31

1
@GyRo页面是帖子的一种。这是必要的,因为它设置了模板标记必须正常运行所需的数据。
米洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.