首页 / 中文教程 / 教程

Bricks 查询结果数量标签 {query_results_count}:循环外也能判断有无结果

Bricks 1.9.1 起内置 {query_results_count:bricksid} 动态标签,可基于元素 ID 获取任意查询的结果数,在循环外做条件渲染,零代码。

Ray Chan·2026-08-12·约 1 分钟

痛点:循环外无法判断查询有没有结果

做 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 查询编辑器支持动态数据”,这一版对开发者来说含金量极高。遇到“无结果隐藏整块”的需求,先想它,别急着写代码。

需要帮忙?

用 Bricks 建站?我接客户项目。

从快速营销站到完整的 Bricks 建站,再到从 Elementor 迁移——我都做过。本站每篇教程都来自真实项目经验。告诉我你的需求,一个工作日内回复。

  • Bricks 建站与改版
  • Elementor / Divi → Bricks 迁移
  • Bricks → Astro / headless 性能升级
  • 速度优化,PageSpeed 95+ 目标