wordpress,为什么要返回$ this-> get_posts();返回值?

时间:2013-09-11 13:01:46

标签: php wordpress

我试图了解wordpress如何处理每个请求并返回结果。我找到wp()函数调用$wp->main(),后者调用$this->query_posts();,并在$wp_the_query->query($this->query_vars)文件中调用query.php函数。 query()函数调用return $this->get_posts();并返回结果。

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

3 个答案:

答案 0 :(得分:5)

我相信这个答案可能会提供你想要的东西:

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

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

WP Query

答案 1 :(得分:2)

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

在方法/函数的末尾使用return语句是一种很好的编码实践,它只是将执行控制返回到它开始的位置,它也是Prevents Code Injection in PHP include files。另外,check this

答案 2 :(得分:1)

简答: 还有其他函数使用返回值,主要是在主题和插件中,但也在WP核心中。示例如下。

长答案:

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

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

 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。 所以fect的任何帖子取决于请求的页面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