WP_QUERY实例是在哪里实例化的(在处理主题时)?

时间:2014-09-10 作者:John Sonderson

这可能是一个非常基本的问题,但我找不到答案。以下文档http://codex.wordpress.org/Class_Reference/WP_Query显示代码

// The Query
$the_query = new WP_Query( $args );
但是当我看到wp-contents/themese/twentytwelve/index.php我看到呼叫have_posts()the_post() 在循环内部,不参考$the_query 好像index.php 是从一个WP_Query 例子有人能解释一下这里发生了什么事吗?

谢谢

2 个回复
SO网友:Bruce Tong

这是因为WP_Query 当你想显示你最近的博客文章、特色文章、带有标签的文章时,是用户生成的,找到它们的最佳位置是在shortcodes文件夹中。所有其他文件都用作模板来迭代、过滤和显示结果。

SO网友:Nicolai Grossherr

您必须彻底阅读文档,例如:

第二个是在The Loop. WP\\u Query为循环中的常见任务提供了许多函数。首先,have_posts(), 哪个呼叫$wp_query->have_posts(), 调用以查看是否有要显示的帖子。如果有,则开始while循环,使用have_posts() 作为条件。只要有帖子要显示,这将反复出现。在每次迭代中,the_post(), 哪个呼叫$wp_query->the_post() 调用,设置内部变量$wp_query 以及全球$post 变量(模板标记所依赖的变量),如上所述。这些是编写需要循环的主题文件时应该使用的函数。另请参见The LoopThe Loop in Action 了解更多信息。

第节:WP_Query - Interacting with WP_Query

并查看source code of have_posts():

739 /**
740  * Whether current WordPress query has results to loop over.
741  *
742  * @see WP_Query::have_posts()
743  * @since 1.5.0
744  * @uses $wp_query
745  *
746  * @return bool
747  */
748 function have_posts() {
749         global $wp_query;
750 
751         return $wp_query->have_posts();
752 }
现在您可以确定,主查询确实与global 变量$wp_query.

但实际上,您只需要阅读文档并开始阅读一些代码,这实际上不是一个问题。

结束

相关推荐

How to finish this loop?

我已经问过一个问题,如何只获取属于某个分类法的父页面的子页面。一位非常有帮助的用户给了我这个答案,然而,我没有得到代码来完成循环的任何一方,这样我就可以得到:标题、特色图片和摘录。我得到的代码是:$child_ids = $wpdb->get_col( \"SELECT ID FROM $wpdb->posts WHERE post_parent = $post->ID AND post_type = \'page\' ORDER BY menu_order\"