为什么主题依赖于《环路》?

时间:2014-11-28 作者:erwan

我最近一直在关注Wordpress主题的开发,我试图理解为什么Wordpress是用“循环”编码的,而不是提供一系列可以通过foreach循环的帖子。

这似乎增加了主题开发的复杂性,但如果他们不择手段地创建这种“循环”概念,肯定有原因吗?

4 个回复
最合适的回答,由SO网友:Rarst 整理而成

您认为WordPress模板是PHP应用程序代码。从本质上讲,它们不是那样的。

WordPress模板按设计是使用Template Tags API. 这是额外的抽象级别,恰好允许使用PHP语言的其余部分。

模板标签的易用性有助于WordPress的流行,并为人们调整主题提供了极低的输入栏。相信我,周围有很多人使用/调整循环,但他们对循环的实际情况了解不多,在极端情况下,循环是什么arrays 甚至是。

SO网友:Mark Kaplun

循环只是迭代查询返回的帖子的过程的抽象。与所有抽象一样,如果不直接使用数组之类的语言结构,您会付出一定的性能代价,但它会创建一个更可读的代码(希望如此),如$q->hove_posts() 更容易掌握($I++ < count($q->$posts)).

主题遵循循环的主要原因可能是所有教程和wordpress包含的主题都使用它,即简单惯性,但是我从来没有见过有人声称这个循环在任何方面都是不好的,因此,用任何其他方式尝试都没有多大意义。

SO网友:Milo

每个查询对象都包含一个返回帖子的数组,所以从技术上讲,您可以使用foreach来显示帖子,但我认为这不会简化任何事情。首先,您将丢失循环开始和结束操作,以及知道代码是否在循环中执行的能力,但您将丢失的主要内容是当前的post上下文-所有模板标记都必须传递当前正在处理的post的上下文。

SO网友:pwbred

WordPress数据都围绕着“帖子”的概念,这实际上只是一种用来描述存储在数据库中的复杂数据数组的口语。该数组中的数据片段在上下文中是有意义的。

因此,从技术上讲,如果您真的愿意,可以使用foreach从该数组中提取所有数据。但为什么要麻烦呢?“循环”(也有点口语化)确实简化了主题开发,而不是造成复杂性。它使您能够使用所有方便的方法提取希望在主题中显示的任何类型的数据(从迭代中的当前“post”)。

有什么比这更简单的?

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    // get that data, bro. Put it in the  middle of some HTML, if you want.
<?php endwhile; else : ?>
    // or don\'t, who cares?
<?php endif; ?>
如果这对你更有意义,那就去做:

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post(); 
        // Oh sweet, I can echo everything and concatenate stuff!
    } // end while
} // end if
参考号:The Loop

结束

相关推荐

Split loop into columns

我正在尝试将循环拆分为4列。我的逻辑有很大的缺陷,我的布局也有问题。这么简单的问题,但我正在努力解决。我基本上需要将每组四根柱子包装在一个容器“行”分区中。当然,剩下的任何柱子,即使少于四根,也要进行包装。<div class=\"twelve columns\"> <?php $i = 0; if (have_posts() ) : while ( have_posts() ) : the_post();