如何理解WordPress主题中的主循环?
熟悉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注册登录页美化插件Custom Login Page Customizer by Colorlib追格小编分享过一款WordPress登录页面美化插件:Login Designer,今天再分享一款类似插件Custom Login Page Customizer by Colorlib。
-
Simple Lightbox:WordPress图片附件打开效果(灯箱效果)插件Simple Lightbox是一个WordPress图片附件打开效果(灯箱效果)插件,就是让文章内的图片,在点击后弹出类似于幻灯片的效果,即实现点击查看高清图片用。
-
WordPress插件:Branda 自定义网站仪表盘插件(白标插件)Branda是一个自定义网站仪表板WordPress插件,有些人也叫白标插件。Branda支持自定义网站仪表板的很多位置,支持修改或删除工具栏中的徽标、添加工具栏链接、删除工具栏链接等。
-
WordPress插件:LoginPress注册登录页美化插件LoginPress是一个WordPress登录页美化插件,LoginPress插件在WordPress官网显示有20万+的安装量,该插件和其他登录美化页插件差不多,均可可视化修改登录页面和登录表单,自定义登录页Logo,自定义登录页面背景,自定义登录页面表单样式等。
-
WordPress do_action() 和 do_action_ref_array() 区别WordPress do_action() 和 do_action_ref_array() 区别
-
WordPress函数:wp_doing_ajax 判断是否是 AJAX 请求WordPress函数:wp_doing_ajax 判断是否是 AJAX 请求
暂无评论,抢个沙发...