我试图了解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
答案 0 :(得分:5)
答案 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