首页 / 中文教程 / 教程

Bricks 嵌套查询循环:CPT 循环里套 Meta Box Group 循环

课程列表页上,每个课程下面要列出它自己的日程事件?外层查询循环查 CPT,内层查询循环用 Bricks 内置的 MB Group 类型读当前文章的 Group 字段——两层循环自动对齐,几乎不用写代码。

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

场景:课程列表 + 每门课的日程

Bricks 查询循环支持嵌套:外层循环每输出一个循环项,内层循环就针对这个循环项再跑一次查询。经典组合是“CPT 列表 + 每篇文章的 Meta Box Group 字段”:

静态页面列出全部课程(course CPT),每门课下面显示它自己的日程事件——事件存在 Meta Box 的可克隆 Group 字段 events 里,子字段是开始时间(Start Datetime)和结束时间(End Datetime),都是 Datetime Picker 类型。

外层循环负责课程,内层循环用 Bricks 内置的 MB Group 查询类型直接读当前课程的 events 字段,两层循环的行数不同也没关系——内层循环只属于它所在的那个外层循环项。全程在构建器里点选,不需要 PHP。

Step 1:日期时间字段的存取格式

动手搭结构之前,先处理字段存取格式,这是最容易踩的坑:

  1. 在 Meta Box 字段设置里,把两个 Datetime Picker 子字段的 Save format 设为 Y-m-d H:i:s
  2. 勾选 “Save value as timestamp”(存为时间戳)。

为什么?日期时间字段默认可能按显示格式存字符串,字符串排序和比较都不可靠。统一成时间戳存储后,后续要做“按开始时间排序”“只显示未来事件”这类操作时,数据本身就是可比的数字。注意:改格式不会自动转换已存数据——如果课程条目是在修改设置之前录入的,需要逐条重新选择一次日期时间并保存,让字段按新格式重写。

Step 2:搭建嵌套循环结构

用 Bricks 编辑一个静态页面,按下面结构搭(名称只是便于识别):

  1. Section > Container:放一个 “Our Courses” 的 h2 标题。
  2. 标题下方加一个 Container,里面放一个 Block,改名为 “Course CPT Loop”:
    • 启用查询循环,Post type 设为 Courses(课程);
    • Block 里放一个 Post Title 元素(h3),显示课程名。
  3. 在 Post Title 下方再加一个 Block,改名为 “Events Field Loop”:
    • 启用查询循环,查询类型选 MB Group: Events(对应 events 字段);
    • 循环项里放 Basic Text,通过动态数据面板的 Meta Box 分组插入开始时间和结束时间两个子字段,样式按需排版(比如“3月1日 10:00 – 12:00”)。

保存并查看前端:每个课程卡片下方都列出它自己的日程;没有填 events 字段的课程,内层循环为空,不会多出空白行。

嵌套循环的对齐原理

嵌套循环之所以“自动对齐”,是因为 Bricks 的查询系统在渲染内层循环时,会把当前外层循环项作为查询上下文(即 object_id)传给内层查询。MB Group 查询类型读取的就是这个上下文文章的 events 字段——外层循环到哪门课,内层就读哪门课的数据,天然一一对应,不需要任何手动传参。

由此可以延伸出很多组合:

  • 外层是 Taxonomy 术语循环,内层是该分类下的文章;
  • 外层是 ACF Repeater 循环,内层读循环项引用的文章(配合自定义查询类型);
  • 内层 MB Group 查询同样支持按子字段排序/筛选(bricks/query/run 钩子),可以在嵌套场景里叠加。

小结:嵌套查询循环 = 外层循环提供上下文 + 内层循环消费上下文。MB Group 是 Bricks 内置查询类型里最适合做嵌套的之一,因为 Group 字段天然挂在单篇文章上。记住两个要点:日期时间子字段统一用时间戳存储(改了格式要重存旧数据),内层循环的查询类型选 MB Group 并指向目标字段名。这套结构同样适用于 MB Cloneable 等其他字段形态。

需要帮忙?

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

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

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