当前位置: 首页 > 知识库问答 >
问题:

关于WordPress循环如何深度工作的一些疑问(试图调试它)

路金鑫
2023-03-14

我在WordPress开发方面是非常新的(还有PHP开发方面,我来自Java和C#)。今天,我安装了Aptana并配置了XDebug来检查TwentyTware主题中发生了什么。

特别是,我试图理解WordPress是如何通过循环加载帖子的。

所以,从现在起,我只知道如何在一个WP主题中创建一个循环,但我不知道它到底是如何工作的。

因此,在twentytware中,我找到了post循环,这段代码是:

根据我的理解,循环是由while循环组成的,其中have_posts()结果是执行while主体的条件。

好了,下面的问题很可能与我对PHP的无知有关,但是构造的具体含义是什么:

<?php while ( have_posts() ) : the_post(); ?>

have_posts()是要在while中执行的条件,但它非常意味着:the_post();

post()调用是循环的第一个操作还是什么?

然后,我将一个breackpoint放入定义到query.php文件中的have_posts()函数中。

function have_posts() {
    global $wp_query;

    return $wp_query->have_posts();
}

这个query.php文件到底是什么?是上课还是什么?看着它的代码,我觉得它不是一个类……为什么?

什么具体代表$WP_Query变量?它是一个物体还是什么?(PHP不是类型化的,所以我怎么知道一个变量包含什么?)

这个操作意味着什么:

$wp_query->have_posts();

我认为它调用了另一个版本的have_posts()函数(定义在query.php文件中),该函数检查是否存在要显示的其他帖子或它们是否已结束。

但具体是怎么工作的呢?阅读PHP OO文档时,->运算符调用了一个对象的方法,但我不知道$wp_query是否是一个对象,或者在这个contes中,->运算符是否有另一种意义...

你能帮我弄清楚它到底是怎么工作的吗?

TNX

共有1个答案

李星波
2023-03-14

要了解wordpress中循环的工作原理,您必须了解php中的一些基础知识

在函数<?php while(have_posts()):the_post()之前;?>存在wordpress post array格式的数组全局查询[0][1][2][3]

所以have post时post只是表示,如果有post的话,该元素被设置为post

它将所有调用设置为中继到单个数组中的内容http://codex.wordpress.org/function_reference/the_post

例如,当您调用the_content()时,您将显示该文章的索引,并且在该索引中有一个“content”=>“contents goes here”

长话短说,学习wordpress预定义的语法和循环如何在他们的文档站点上工作。

网址:http://codex.wordpress.org/function_reference/

 类似资料:
  • 这段时间我在学习Spring框架。 现在我正在研究春豆的生命周期,尤其是关于豆子的日化和破坏,阅读本教程: http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm 我已经实现了前一篇文章中提出的示例,但我对这个论点有疑问。 在这个例子中,我只有两个类:HelloWorld。java和MainApp。JAVA 在地狱世界。jav

  • 我正在使用Qt/openGL,激活深度缓冲区时遇到了一些问题。 在每一帧,我激活以下状态:glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); 另外,我检查了我的深度缓冲区的大小不是空的(glGetIntegerv(GL_DEPTH_BITS)给我24,这是预期的值),但是深度测试不起作用,一些应该通过深度测试丢弃的片段不起作用。 知道吗?

  • 结果: 问题: 1.lis,ele=>ele.textContent中我把ele.textContent换成了lis.textContent结果出来的是一个undefine的集合,是为什么? 2.lis,ele=>ele.textContent我是否可以理解为Array.from(arr,function),然后返回元素的文本内容? 3.该怎么理解lis和ele之间的关系呢?(因为看到很多案例都是

  • 1)第一个疑问与这样一个事实有关:在这个类中,对于每个CRUD方法,我都打开一个新的会话。 我之所以这样做是因为在本教程http://www.tutorialspoint.com/hibernate/hibernate_sessions.htm中我读到: Session对象是轻量级的,设计成每次需要与数据库交互时都要实例化。持久性对象通过会话对象保存和检索。会话对象不应该保持长时间打开,因为它们通

  • 15.3 循环执行的例行性工作调度 相对于 at 是仅执行一次的工作,循环执行的例行性工作调度则是由 cron (crond) 这个系统服务来控制的。刚刚谈过 Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以进行例行性工作调度,所以啰, Linux 也提供使用者控制例行性工作调度的指令 (crontab)。 下面我们分别来聊一聊啰! 15.

  • 问题内容: 这是一个非常简单的for循环: 我知道它主要如何工作,但是我不明白最后的工作方式:如果我是对的,它应该加1,但是当它打印出时,它先打印0,然后再打印1。 为什么为什么不从1开始就因为?为什么仍然只打印出原始值而不是原始值? 问题答案: 一个循环的工作方式如下: 初始化完成(在您的情况下;仅执行一次) 条件检查(此处),如果条件为假,则退出循环 大括号内的代码已执行(根据您的情况) 更新