wp_reset_postdata 和 wp_reset_query 的作用与区别
我在WordPress中的实践:wp_reset_postdata和wp_reset_query
我是一名WordPress爱好者,一直在使用这个平台来搭建博客和网站。在使用的过程中,发现有两个函数经常被提到,那就是wp_reset_postdata和wp_reset_query。这两个函数用来干什么的、有什么区别,我在这里总结一下我的理解,希望对大家有所帮助。
在进入正题之前,有几点需要弄清楚:
- WordPress主查询的示例是$wp_query。
- WordPress默认的文章变量是$post。
接下来,我们先来看看wp_reset_postdata。
wp_reset_postdata的作用
下面是官方描述:
在使用WP_Query类新建查询实例后,使用这个函数重置主循环的全局$post变量,此函数把$post变量恢复到了当前页面的主循环。
我们知道,在PHP中,如果给变量重新赋值,后面的值会覆盖前面的,放在WordPress主次查询中,在某个页面新建查询后,新查询的$post变量会覆盖主循环的$post变量。
而我们通常需要在主查询中间插入一部分内容,比如在某个页面中间调用某个分类的文章列表,然后接着显示主查询的内容,而新插入的内容把主查询的$post变量修改了,后面还怎么显示?这时候,wp_reset_postdata来了,调用一下这个函数,被改变的主查询$post变量就轻轻松松的回来了。
wp_reset_query的作用
还是先看官方描述:
wp_reset_query()还原$wp_query和全局文章数据到原始主查询,此函数应该在query_posts()后调用。
这里说的全局文章数据就是上面的全局$post变量的值,一起被还原的还有$wp_query()查询实例。到这里,区别已经出来了,wp_reset_query()功力更深厚,不但能还原全局$post变量,还把包含这个变量的实例一起还原了。
什么时候使用wp_reset_query,什么时候用wp_reset_postdata?
在我的实践中,有两种情况需要用到wp_reset_query。
- 使用了query_post之后(不建议使用这个,会制造出来很多麻烦)。
- 用$wp_query变量新建WordPress查询实例之后(基本上等于query_post了,所以新建查询实例就不要用$qp_query作为变量名了)。
其他情况下,直接用wp_reset_postdata就足够了,下面给出一个建议的新建查询的用法,大家可以参考一下。
$args=array(
'post_type' => 'post',
'author' => 5
//这里可以添加任何wp_query查询参数
);
$the_query=newWP_Query($args);
if($the_query->have_posts()){
while($the_query->have_posts()){
$the_query->the_post();
//有文章了想怎么输出就怎么输出
}
}else{
//没有文章怎么办?
}
wp_reset_postdata();
//还原文章数据
以上就是我的理解,如果有不妥之处,欢迎指正。

-
个人网站选择WordPress还是Typecho? 2023-05-28 23:33:13
-
盘点2023年最好用的三款wordpress知识库主题 2023-05-28 23:20:26
-
wordpress建外贸B2C独立站的五大优势 2023-05-28 23:05:49
-
盘点2023年依然好用的3款wordpress文档主题 2023-05-28 23:02:19
-
盘点2023年依然好用的3款wordpress外贸网站主题 2023-05-28 22:59:41
-
盘点2023年依然好用的3款wordpress轻社区主题 2023-05-28 22:57:54
-
盘点2023年依然好用的3款wordpress电商主题 2023-05-28 22:56:05
-
wordpress后台地址是多少(附:后台地址修改教程) 2023-05-28 22:54:15
-
盘点2023年依然好用的3款wordpress笔记主题 2023-05-28 22:51:13
-
开源wordpress主题:kratos 介绍 2023-05-28 22:47:46