痛点:循环外无法判断查询有没有结果
做 Bricks 站点时有个高频需求:查询没有结果时,整个区块(含标题)都不显示。比如首页放一个“最新项目”区块,项目文章一篇都没有时,光秃秃的标题和空布局很难看。
在 Bricks 1.9.1 之前,想判断某个查询有没有结果,只能再写一个自定义函数、手工复制一遍同样的查询参数,然后挂到 Dynamic data 条件上用——又笨又容易两头不同步。这个痛点直到 Bricks 1.9.1 才真正解决。
内置标签:{query_results_count}
Bricks 1.9.1 新增了动态数据标签:
{ query_results_count:bricksid }
其中 bricksid 是开启了查询循环(Query Loop)的那个元素的 Bricks ID。这个标签会返回该查询的结果数量。
关键点在于:它在循环内外都能用。循环(Query Loop)内部其实早就可以用 {query_results_count} 显示结果数,但那个只能在循环上下文里取当前循环的数量;{query_results_count:bricksid} 靠元素 ID 定位任意查询,所以在循环外面、甚至页面上任何位置都能拿到指定查询的结果数——这正是它被称为“改变游戏规则”的原因。
实战:文章数为 0 时隐藏整个区块
假设你的页面结构是:Section → Container(标题)→ Block(带 Query Loop,查询 CPT 项目文章),查询设置 5 篇最新项目。
现在要让整个 Section 只在至少有 1 篇已发布项目文章时输出。做法:给 Section 加一个 Dynamic data 条件,填入:
{ query_results_count:hmvylb }
其中 hmvylb 是开启 Query Loop 的那个 Block 的 Bricks ID。条件会解析为查询结果数量:数量 ≥ 1 时条件成立、区块显示;数量为 0 时区块连同标题一起隐藏。
原理:Bricks 的动态数据条件支持数值比较(大于 0 / 等于 0 等)。{query_results_count:bricksid} 把“查询有没有结果”变成“数量是否为 0”,从而让条件系统可以直接消费。整条链路都是 Bricks 内置能力,不需要任何 PHP 代码。
相关阅读:
适用范围与注意事项
-
适用于所有查询类型:不只是默认的 Posts 查询,ACF Repeater、Meta Box 等自定义查询类型的结果数同样能取到。
-
Bricks ID 哪里找:在 Bricks 编辑器里选中元素,右上角元素面板里能看到该元素的 ID(如
hmvylb)。它对应 DOM 中该元素的id属性。 -
如果查询元素在页面里会被循环渲染多次(比如嵌套循环里的项),取到的是首次渲染的查询上下文,使用时留意。
小结:{query_results_count:bricksid} 是 Bricks 1.9.1 给进阶用户的一份大礼——“循环外判断任意查询有无结果”这个过去要写 PHP 才能解决的问题,现在一个动态标签加一个条件搞定,且与 ACF Repeater 等自定义查询兼容。配合同样在 1.9.1 加入的“PHP 查询编辑器支持动态数据”,这一版对开发者来说含金量极高。遇到“无结果隐藏整块”的需求,先想它,别急着写代码。
常见误区
用 {query_results_count} 先确认版本门槛:它从 Bricks 1.9.1 开始才有,老版本只能靠自定义函数复制查询参数来判断,别在旧站上硬套。第二个坑是Bricks ID 找错:要在编辑器里选中元素、看右上角面板显示的 ID(如 hmvylb),不是随便编的;三是嵌套循环里取到的可能是首次渲染的查询上下文,元素被循环渲染多次时,标签取到的是第一个,需要按实际结构验证。它对所有查询类型(含 ACF Repeater、Meta Box 自定义查询)都有效,不只是默认 Posts 查询。
常见问题(FAQ)
Q:这个标签从哪个版本开始有? A:Bricks 1.9.1 起才有;更早版本只能写自定义函数复制查询参数来判断。
Q:标签里的 Bricks ID 去哪找? A:在编辑器选中元素,右上角元素面板会显示该元素 ID(如 hmvylb),对应 DOM 的 id。
Q:嵌套循环里取到的结果对吗? A:元素被循环多次渲染时,取到的是首次渲染的查询上下文,要按实际结构验证。
Q:自定义查询(ACF/Meta Box)也能用? A:能,不只默认 Posts 查询,ACF Repeater、Meta Box 等自定义查询的结果数同样能取。
延伸阅读
- 想要现成外贸独立站模板与建站实战?看 铲子铺 chanzipu 的外贸建站教程(同用 Bricks,从零搭出能收询盘的站)
- 相关阅读:Bricks Query Loop Api Data
延伸阅读
Bricks 让元素输出 N 次(N = 自定义字段值):Array 查询类型实战
教程:Bricks 让元素输出 N 次(N = 自定义字段值):Array 查询类型实战——query loop 附完整代码可直接复用,适合外贸独立站与 WordPress 开发者。
tutorialBricks 三大高级功能:动态数据、Query Loop 与条件显示
讲透 Bricks 做动态网站的三件套——Dynamic Data(动态数据)、Query Loop(遍历查询)、条件显示,含动态数据字段、伪 SQL 查询逻辑与 AND/OR 条件用法。
tutorialBricks 动态数据详解
教程:动态数据让元素显示随内容变化的值而非写死文本。系统讲它的机制、来源与 Query Loop 里的典型用法。
tutorialBricks 动态条件:仅当文章存在手动摘要(Excerpt)时才输出元素
教程:Bricks 动态条件:仅当文章存在手动摘要(Excerpt)时才输出元素——dynamic data 附完整代码可直接复用,适合外贸独立站与 WordPress 开发者。
