熟悉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函数:esc_html_x 带上下文的转义翻译WordPress函数:esc_html_x 带上下文的转义翻译
-
WordPress函数:esc_attr__ 转义属性及翻译WordPress函数:esc_attr__ 转义属性及翻译
-
WordPress 6.5移除区块样板菜单项的方法WordPress 6.5新增的区块样板菜单项,可将不同区块组合成一个新的区块模板,方便重复使用。
-
WordPress做多语言企业网站近期常用小伙伴问追格小编,有没有计划做双语WordPress企业官网主题。
-
WP Multilang WordPress翻译插件WP Multilang插件的主要功能是提供多语言支持,使用户能够创建多语言版本的网站,满足不同语言用户的需求。
-
WordPress插件:LiteSpeed Cache 缓存插件LiteSpeed Cache是一款实用的WordPress缓存插件,专为使用LiteSpeed服务器的用户设计。它能显著提高网站加载速度,改善用户体验。
暂无评论,抢个沙发...