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古腾堡编辑器的区块(PHP+原生JS) 2024-01-10 01:01:06
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45