2

我试图找出 wordpress 如何处理每个请求并返回结果。我发现wp()函数调用$wp->main()依次调用$this->query_posts();和调用文件中$wp_the_query->query($this->query_vars)的函数query.phpquery()函数调用 return $this->get_posts();并返回结果。

我的问题是没有看到任何变量接收这个返回值,所以为什么这个函数有返回,即使如果我从代码中删除返回值,wordpress 也可以工作。那么这个返回的目的是什么,(我猜这个代码将内容(帖子)保存到$this->posts变量中)。顺便说一句,我正在使用 wp 3.6

4

3 回答 3

5

我相信这个答案可能会提供您正在寻找的内容:

https://wordpress.stackexchange.com/a/1755

特别是这张图片(我没有自己创建):

WP查询

于 2013-09-14T00:48:05.967 回答
2

return的使用不仅与php(也用于其他语言)有关WordPress。当执行到达 areturn statement时,函数停止并返回该值而不处理任何函数。没有值的 A返回 null 并且如果函数末尾return没有关键字,那么在这种情况下,也会返回一个值。returnnull

return在方法/函数的末尾使用语句是一种很好的编码习惯,它只是将执行控制返回到它开始的位置,它还可以防止 PHP 包含文件中的代码注入。另外,检查这个

于 2013-09-14T01:32:23.270 回答
1

简短回答:还有其他函数使用返回值,主要在主题和插件中,但也在 WP 核心中。下面给出例子。

长答案:

在 wordpress 中,WP_Query::query() 方法用于从数据库中获取帖子。这是通过提供某些选择标准来完成的,即:query_vars。检索和提供帖子的依据。

现在,在您提到的情况下,重要的是调用堆栈,即用于调用函数的路径。IE:

 wp() ---> 
           [WP->main()]-->
                       WP->query_posts()          {here the query is
                                                   called on the global 
                                                    wp_query Object} 
                            -->WP_Query->query() 

在 WP->main() 中,调用 parse_request 方法,它从 REQUEST_URI 创建 query_vars。因此,无论发布什么帖子都取决于请求的页面 URL。即选择的标准由请求页面的url 提供。并且由于在全局 wp_query 对象上调用了查询方法,因此无需返回它。这形成了主要路径,即:全局 wp 查询和请求 uri 查询变量。

但是在某些情况下,例如在主题、插件中,当您需要获取其他帖子时。您将创建一个新的 wp 查询对象,并使用查询方法。例如:获取 'john' 的所有帖子。在这些情况下,使用查询方法返回的值。

    $wpquery = new Wp_query();
    posts = $wpquery->query("author_name=john");

一些使用它的功能:

wp_nav_menu_item_post_type_meta_box /wp-admin/includes/nav-menu.php 
wp_link_query /wp-includes/class-wp-editor.php
于 2013-09-17T20:49:18.297 回答