熟悉WordPress主题开发的朋友,对于【主循环】这个词一定不陌生。
主循环为开发主题,带来了很大的方便,也给一些WordPress新同学,带来了一些困惑。
比如,查询数据会莫名其妙的乱掉。比如,主循环的查询结果,并不是想要的结果。
做过WordPress主题开发的朋友都知道,WordPress的URL和主题模板页面的对应关系。
主循环,就是,WordPress根据URL解析查询参数;然后,根据查询参数,从MySQL查询出的文章列表。
在开发WordPress主题时,直接使用查询出的数据就可以了。这样,对于不太熟悉PHP的同学是很方便的。
为什么,有时候数据会乱掉呢?这主要是全局变量的锅。使用了全局变量,难免大家都会修改这个变量。
如上图(源自WordPress官方)所示,query_posts()函数,专为主循环设计。
调用 query_posts,就会使用到 $wp_query 和 $post 两个全局变量
WordPress官方官方警告:务必使用 wp_reset_query 重置主循环;使用 wp_reset_postdata 重置 $post。
那么,如何修改主循环的查询结果呢?
根据上文,我们很容易得出答案:使用 query_posts ,传入合适的参数,就可以。不过,这么做是不对的。
正确的方法是使用 pre_get_posts 钩子。在回调函数内,用函数 is_main_query 判断是主循环后,修改查询参数。
大概整理一下WodPress的设计思路:
1. query_posts 是主循环专用的,任何时候,都不应该主动调用;
2. 如果想要修改主循环,请使用 pre_get_posts 钩子;
3. 其他要查询文章的地方,使用 get_posts 或者 WP_Query。
-
WordPress函数:register_uninstall_hook 设置插件的卸载回调函数WordPress函数:register_uninstall_hook 设置插件的卸载回调函数
-
WordPress函数:wp_trash_post 移动文章到回收站WordPress函数:wp_trash_post 移动文章到回收站
-
WordPress函数:wp_update_post 更新修改文章WordPress函数:wp_update_post 更新修改文章
-
WordPress函数:wp_trash_post_comments 移动文章评论到垃圾站WordPress函数:wp_trash_post_comments 移动文章评论到垃圾站
-
WordPress函数:wp_delete_attachment 删除附件WordPress函数:wp_delete_attachment 删除评论
-
WordPress函数:wp_update_user 更新用户信息WordPress函数:wp_update_user 更新用户信息
暂无评论,抢个沙发...