欢迎光临
我们一直在努力

掌握 WP_Query : 入门介绍

建站超值云服务器,限时71元/月

本文目录
[隐藏]

  • 1什么是WP_Query?
    • 1.1重置请求数据
  • 2为什么要使用WP_Query?
    • 2.1为什么使用WP_Query 而不使用其他自定义的查询方法?
    • 2.2什么时候你可能需要用到WP_Query?
  • 3注意事项
  • 4小结

本文是《掌握 WP_Query》系列教程的第 1 部分,该系列共包含以下 19 个部分:

  1. 掌握 WP_Query : 入门介绍
  2. 掌握 WP_Query:教你使用Loop循环
  3. 掌握 WP_Query:相关的函数
  4. 掌握 WP_Query:行动器和过滤器
  5. 掌握 WP_Query:WP_Query类的属性和方法
  6. WP_Query 参数:文章、页面和文章类型
  7. WP_Query 参数:分类和标签
  8. WP_Query 参数:分类法(Taxonomies)
  9. WP_Query 参数:自定义字段(Custom Fields)
  10. WP_Query 参数:日期
  11. WP_Query 参数:状态、排序和分页
  12. WP_Query 参数:作者、搜索、密码、权限、缓存和返回字段
  13. 掌握 WP_Query:10个有用的例子
  14. 结合 WP_Query 与主查询(the Main Query)
  15. 掌握 WP_User_Query
  16. 掌握 WP_Comment_Query
  17. 掌握 WP_Meta_Query 和 WP_Date_Query
  18. WordPress 4.1的查询改进
  19. 掌握 WP_Query:结尾

通常来说,Wordpress会在你所有展现的网页上运行query(查询)功能,查询不同的属性决定了你所看到页面。因此,如果你正在查看一个静态页面,WordPress的运行查询相关ID来显示页面,而如果归档页面被浏览,查询将检索该归档的所有文章。

但有,有的时候我们需要定制内容。这可能是你的文章内容部分或其他页面上的部分(如:侧边栏或页脚),显示一些特定的内容,而不是WP默认查询输出。

有了WP_Query类,这一切都好办了。WP_Query类提供了大量的参数,你可以去设置这些参数来决定什么样的内容将被展示出来(这不仅仅局限于文章页面)。然后,它会运行一个循环函数,来循环展示你所想要展示的内容。

《掌握WP_Query》本系列的学习,共19篇博文。完成本系列的学习,你会从基础入门到精通WP_Query,学会在各种场景下使用WP_Query,轻松使用其完成对Wordpress网站的数据库数据检索/修正功能。

在此文我们将介绍以下内容:

  • 什么是WP_Query?
  • 为什么要使用WP_Query?
  • 潜在的问题/有什么要注意的。

什么是WP_Query?

WP_Query是由WordPress提供的一个类。通过WP_Query,你可以轻松的使用已经集成到WordPress核心代码中的变量、判断和功能,而不必担心自己编写所有的代码。这使你的代码更高效,更可靠。

如果你是个处女座,想知道WP_Query干了嘛,你可以在includes/query.php中看到它的原码。(么担心啦,无病毒啦~~~全世界那么多同志在使用,嘻嘻)

WP_Query包括四个部分:

  • 需要查询的参数,或者参数集合。
  • 开始查询。
  • 循环输出——这将输出文章内容、标题或任何你想显示的内容。
  • 查询结束——通过标签判断、重置请求数据。

下面我们来举个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
$args = array(
    // 用于查询的参数或者参数集合
);
 
// 自定义查询
$query = new WP_Query( $args );
 
// 判断查询的结果
if ( $query->have_posts() ) {
 
    // 通过查询的结果,开始主循环
    while ( $query->have_posts() ) {
 
        $query->the_post();
 
        // Contents of the queried post results go here.
 
    }
 
}
 
// 重置请求数据
wp_reset_postdata()
 

<?php $args = array( // 用于查询的参数或者参数集合 ); // 自定义查询 $query = new WP_Query( $args ); // 判断查询的结果 if ( $query->have_posts() ) { // 通过查询的结果,开始主循环 while ( $query->have_posts() ) { $query->the_post(); // Contents of the queried post results go here. } } // 重置请求数据 wp_reset_postdata(); ?>

你可以在查询的时候去定义需要查询的参数,但是我们不建议这样,我们建议:在查询之前准备好需要查询的参数。保持代码的简洁、易读。

重置请求数据

在例子程序中,我们在每次查询之后添加了wp_reset_postdata()函数,它可以把本次查询的结果传递到页面上主查询中去。

例如,如果你使用WP_Query去展现一组查询数据到侧边栏里,使用wp_reset_postdata()去告诉WordPress哪个页面是我们刚刚访问的页面,并且传递参数至页面的主查询。

如果你不这样做,其他任何页面上运行的查询(包括默认查询)都可能会中止,任何判断页面类型的条件标签都不会正常工作。

为什么要使用WP_Query?

如果你没有使用过WP_Query类,你可能会想为什么要学习它。这里我们将从两个方面进行回答:为什么使用WP_Query 而不使用其他自定义的查询方法;哪些地方你可能会想到用WP_Query。

为什么使用WP_Query 而不使用其他自定义的查询方法?

WP_Query不是仅有自定义查询方法。还有以下四种:

  • pre_get_posts
  • get_posts()
  • get_pages()
  • query_posts() (不推荐)

以上的方法我们不过多的介绍,但是你有时间去了解一下,也是很有用处的。

  • pre_get_post 是一个修改主查询的hook(挂钩)。通过条件标签去判断是否有一个确切类型的页面已经展示了出来(如:主页),然后使用pre_get_post去修改查询(如:删除在某个地方展示的最近的3篇博文)。这是非常高效的方式去修改主查询,也是首先应该想到的。但是,不能使用它去创建一个新的查询。
  • get_posts()get_pages()  除了名字不同,功能类似。这些模板类拓展了WP_Query类,用不同的方式做了同一件事件,当你在调用WP_Query类之前,额外的插入了一步,而非直接插入到wp_query中去。当且仅当查询文章与页面的时候使用get_post和get_paget(),而强大的wp_query,可以包含数据库所有的查询情况。
  • query_posts() 可以修改主查询(不能在插件和主题中使用)。Query_post()会跳出主查询并重新开始,把主查询给替换掉。很容易报错,特别是标记页码的时候,它会很低效并且使页面加载时间变长。如果需要修改主查询,使用pre_get_post吧。如果你是想重新新建一个查询,请使用wp_query。

在下图中,Andrey “Rarst” Savchenko 将这几个函数做了一个功能演示:

掌握 WP_Query : 入门介绍

 

什么时候你可能需要用到WP_Query?

有很多种情况下,使用WP_Query会很有效率。下面尽可能多给大家展示:

  • 在当前文章的后面添加一个相关文章的列表——例如:添加一个相关分类的所有文章的列表。
  • 在同一页面新建2个循环,例如:在FAQ页面,设置在问题标题处和内容的下面。
  • 当小工具(近期文章)显示不出你所需要的内容(或者你是大牛,自己来写的除外^_^),那就用WP_Query来新建一个自定义近期文章列表,放到侧边栏或者网站页脚。
  • 创建分类自定义查询,使用多个分类区分要显示的内容。
  • 查询文章类型不能够由默认查询而输出的,如:附件生成。
  • 由很多种查询生成自定义的内容多样的页面,正如示例程序

注意事项

WP_Query很强大,但是它也有缺点:

  • 如果是为了改变文章显示成为特点的类型或者分类,不要用WP_Query。而是,简单的为新的内容或者分类新建一个模板文件,在这个模板文件中设置主循环。
  • 如果是在一个归档中展示一小部分文章(例如:不展示特定的分类文章),不要用wp_query去生成一个总的查询。而是用pre_get_posts去修改主查询,利用一些条件标签去定位出你想要修改的内容。
  • 一定要警惕在页面上使用过多的查询。理论上,可以在一个页面上使用成百上千个查询,但是请考虑一下你的服务器的负载吧。如果说某个页面需要4到5个查询工作,那么就考虑做一个新的页面模板吧。

小结

WP_Query类是一个强大的丰富的工具,它可以让你自定义页面上的查询,使你的Wordpress网站展现成你所需要的内容。同样,我们也可以使用其他的查询方法,如文章中所介绍的。

在该系列的剩余部分,我们将介绍如何使用wp_query,并且熟悉掌握它。

阅读该系列的其他文章: 下一篇:掌握 WP_Query:教你使用Loop循环

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 掌握 WP_Query : 入门介绍
分享到: 更多 (0)