### [释放 WP_Query 的力量:探索属性和方法](https://www.prosaas.cn/article/4503) **Published:** 2023-09-04T00:05:06 **Author:** 5201314 **Excerpt:** 欢迎来到“掌握 WP_Query”系列的另一部分。到目前为止我们做得怎么样?我希望您喜欢这些教程,就像我们喜欢… ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212123028643.jpg) 欢迎来到“掌握 WP\_Query”系列的另一部分。到目前为止我们做得怎么样?我希望您喜欢这些教程,就像我们喜欢编写它们一样。 在本教程中,您将了解 `WP_Query` 类的属性和方法。但首先,我认为讨论一下类中的“属性”和“方法”是合适的。 我们可以吗? ## 属性和方法到底是什么? 在 PHP 中,有一种_更简洁_的方式编写代码:面向对象编程,或 OOP。对于 OOP,我们使用“类”作为蓝图 — 我从 Code Tuts+ 的一篇_经典_帖子中获取了这个术语,Jason Lengstorf 的“面向对象的 PHP 初学者”: > 例如,类就像**房子的蓝图**。它在纸上定义了房子的形状,清楚地定义和规划了房子不同部分之间的关​​系,即使房子并不存在。 (请记住 `WP_Query` 是 WordPress 核心的重要类。) 当您理解 PHP 类的概念时,“属性”和“方法”就会变得非常容易理解,因为这些词只是“变量”和“函数”的同义词。是的,_属性_是 PHP 类的变量,_方法_是 PHP 类的函数。 现在我们已经介绍了它们是什么,让我们来了解每个属性和方法。 _警告:_直接更改属性是不明智的。正如 Codex 所说,您应该使用 `WP_Query` 的方法与它们交互。 ## WP\_Query 类的属性 让我们从 `WP_Query` 类的属性或变量开始。 ### 查询字符串:`$query` 此属性存储传递给 `$wp_query` 对象的查询。 ### 查询变量数组:`$query_vars` 此属性存储 `$query` 的变量(及其值)的关联数组。 ### 查询对象:`$queried_object` 该属性存储当前查询的对象,如 `$post` 对象(如果是 post 查询)或 `$author` 对象(如果是作者查询)。 ### 查询对象的ID:`$queried_object_id` 该属性存储查询对象的ID。 ### 查询返回的帖子:`$posts` 此属性存储从查询返回的帖子。 ### 显示的帖子数量:`$post_count` 此属性存储当前查询的帖子数。 ### 查询返回的帖子数:`$found_posts` 此属性存储 SQL 查询中不包含 `LIMIT` 子句的帖子数量。 ### 页数:`$max_num_pages` 此属性存储页数 - 计算方法是将 `$found_posts` 除以 `$posts_per_page`。 ### 当前帖子的索引:`$current_post` 该属性存储循环中当前项的索引号。例如,如果循环刚刚开始,则为 `-1`,并且通过 `next_post()` 方法递增。 ### 当前帖子:`$post` 这个属性存储当前的帖子。 ### 条件标签布尔值:`$is_{conditional}` 以下属性存储为布尔值,提供有关当前帖子状态的信息: - `$is_single`:检查是否是任何帖子类型(“附件”和“页面”帖子类型除外)的单个帖子。 - `$is_page`: 检查它是否是一个页面。 - `$is_archive`: 检查是否为存档页面。 - `$is_preview`:检查是否是帖子预览。 - `$is_date`:检查是否是基于日期的存档页面。 - `$is_year`:检查是否是基于年份的存档页面。 - `$is_month`:检查是否是基于月份的存档页面。 - `$is_time`:检查是否是基于时间(每小时、每分钟或每秒)的存档页面。 - `$is_author`:检查是否是作者的存档页面。 - `$is_category`: 检查是否是类别存档页面。 - `$is_tag`:检查是否是标签存档页面。 - `$is_tax`:检查是否是分类存档页面。 - `$is_search`:检查是否是“搜索结果”页面。 - `$is_feed`:检查是否是 feed。 - `$is_comment_feed`:检查是否是评论提要。 - `$is_trackback`:检查是否是引用。 - `$is_home`:检查是否是博客主页面。 - `$is_404`:检查是否是404错误页面。 - `$is_comments_popup`: 检查是否是评论弹出窗口。 - `$is_admin`: 检查是否是管理面板。 - `$is_attachment`: 检查是否是附件。 - `$is_singular`:检查是否是任何帖子类型(包括“附件”和“页面”帖子类型)的单个帖子。 - `$is_robots`:检查是否是对 `robots.txt` 文件的查询。 - `$is_posts_page`:检查是否是“帖子页面”(在管理面板的“阅读设置”页面上设置)。 - `$is_paged`:检查是否是分页查询且不是首页。 ## WP\_Query 类的方法 现在我们已经完成了属性,让我们继续讨论 `WP_Query` 类的方法(函数)。 ### `init()` 此方法只是初始化对象,将所有属性设置为 `NULL`、`0` 或 `FALSE`。 ### `parse_query( $query )` 此方法使用 `$query` 属性来解析查询并填充所有其他属性(除了 `$posts`、`$post_count`、`$post` 和 `$current_post`)。 ### `parse_query_vars()` 此方法重新解析查询变量。 ### `get( $query_var )` 此方法获取给定的查询变量。 ### `设置( $query_var, $value )` 此方法将给定的查询变量设置为特定值。 ### `&get_posts()` 此方法返回查询请求的帖子并填充 `$posts` 和 `$post_count` 属性。 ### `next_post()` 此方法增加 `$current_post` 索引并前进到 `$posts` 中的下一篇文章,返回当前的文章对象。 (此方法必须在循环内使用才能正常工作。) ### `the_post()` 此方法使用下一篇文章的数据设置全局 `$post` 变量。 (此方法必须在循环内使用才能正常工作。) ### `have_posts()` 此方法检查是否还有任何帖子需要处理,如果没有,则返回 `FALSE`。 (此方法必须在循环之前使用才能正常工作。) ### `rewind_posts()` 此方法只是重置 `$current_post` 和 `$post` 属性。 ### `&query( $query )` 该方法调用它的两个同级方法:`parse_query()` 和 `get_posts()`,并返回 `get_posts()` 的结果。 ### `get_queried_object()` 该方法返回查询的对象。 (如果尚未设置,则设置 `$queried_object`。) ### `get_queried_object_id()` 此方法与上面的方法类似,返回查询对象的 ID (`$queried_object_id`)。 _快速提示:_如果方法之前有一个 & 符号,则表示该方法通过引用返回。 ## 今天总结 我希望我能够让您清楚“属性”和“方法”对于类的含义。如果您理解 `WP_Query` 类的属性和方法的用途,我可以说我做得不错! 您对这篇文章有什么要补充的吗?在下面的评论部分与我们分享您的想法。如果您喜欢这篇文章,请不要忘记与您的朋友分享。 本系列下一部分见! 以上就是释放 WP\_Query 的力量:探索属性和方法的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** WordPress ---