熟悉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。
-
FluentSMTP一款功能强大且免费的WordPress SMTP插件FluentSMTP是一款功能强大且免费的SMTP插件,它支持为WordPress配置多个SMTP发送服务器。
-
追格小程序V2.5.8更新发布追格小程序是一款采用积木式理念的微信小程序构建框架,它巧妙融合了Uniapp与WordPress技术,打造出一个开源且无加密限制的开发环境。
-
WordPress必备:使用wp_get_theme()函数获取当前主题详情在WordPress中,wp_get_theme() 函数用于获取当前启用的主题或指定主题的信息。这个函数返回一个 WP_Theme 对象,该对象包含了主题的详细信息,如主题名称、版本、模板目录、样式表目录等。
-
Redis Object Cache WordPress对象缓存插件Redis Object Cache是一款功能强大、易于使用的WordPress对象缓存插件。通过合理配置和优化,可以显著提高网站的访问速度和用户体验。
-
如何禁用WordPress自动生成的768、1536、2048像素及-scaled缩略图追格小编分享过两篇关于禁止自动裁剪微缩的内容,有兴趣的同学可以看看
-
Table Block by RioVizual 专为WordPress Gutenberg编辑器设计的表格插件Table Block by RioVizual是一款功能多且易于使用的WordPress表格插件。它提供了丰富的定制选项和预设计模板库,使得创建和编辑表格变得轻松快捷。
暂无评论,抢个沙发...