首页 / 中文教程 / 教程

Bricks 按 ACF Gallery 图片数量做动态条件输出

通过自定义函数统计当前文章 ACF Gallery 字段的图片数量,再用 echo 动态数据标签在 Bricks 中按数量做条件显示,比如图片多时显示相册链接。

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

场景:按图片数量决定显示什么

做作品集、房源或酒店类站点时经常遇到这样的需求:每篇文章(或循环项)通过 ACF Pro 的 Gallery 字段上传了若干张图片,页面上的某个元素要根据「图片有多少张」来决定显示与否——比如只有一张图就不显示轮播箭头,超过三张才显示「查看全部相册」按钮。

ACF 的 Gallery 字段返回的是一个图片 ID 数组,Bricks 自带的条件逻辑只能判断字段「有值/无值」,判断不了数组的长度。这个免费教程用一行核心函数解决:把数组长度暴露成动态数据。

Step 1:注册数组计数函数

把下面的代码加到子主题的 functions.php(不要带开头的 PHP 标签)或代码片段插件里:

<?php

function bl_get_acf_array_count( $field_name ): int {
    return count( get_field( $field_name ) );
}

函数逻辑极简:get_field() 取出字段值(Gallery 返回数组),count() 统计元素个数。因为返回值强制声明为 int,即使字段为空(get_field 返回 falsenull)也不会报错——count(false) 在 PHP 8 之前返回 0,PHP 8 起对非数组参数会抛警告,所以更稳妥的写法是先判断 is_array() 再计数。

Step 2:echo 标签与条件判断

回到 Bricks 编辑器,在你需要用到数量的元素上,动态数据填入:

{echo:bl_get_acf_array_count(page_gallery)}

其中 page_gallery 替换成你自己的字段名。这个标签会输出当前文章(或当前循环项)里该字段的图片数量。

配合 Bricks 的条件逻辑:选中要控制显示/隐藏的元素 → 条件(Conditions)→ 动态数据选 {echo:bl_get_acf_array_count(page_gallery)} → 操作符选「大于」→ 值填 1。这样只有图片数大于 1 时元素才渲染。在查询循环里它同样逐项生效,每张卡片各算各的。

注意:{echo:...} 标签默认只允许执行白名单内的函数。如果上述标签在前端不输出,先确认是否已通过 bricks/code/echo_function_names 过滤器放行(参见我们站内 ACF Relationship 数量统计教程里的白名单写法)。

原理说明

  • Gallery 字段的返回值是数组,count() 拿到的是图片总数,这是整个方案的地基。
  • {echo:...} 是 Bricks 在元素渲染时执行 PHP 函数并回填结果的动态数据机制,适合这类「Bricks 没直接提供、但一行 PHP 就能算出来」的值。
  • 条件逻辑(Conditions)会在渲染前求值,动态数据先算出数字、条件再比较,两者串起来就实现了「按数量决定显示」。
  • 该函数不限于 Gallery:任何返回数组的 ACF 字段(如 Relationship、Taxonomy 多选、Checkbox 多选)都能用同一个函数统计数量。

小结

一行 count( get_field() ) 就把「数组字段的长度」变成了 Bricks 可用的动态数据,再交给条件逻辑做显示判断。这是 ACF + Bricks 组合里复用率极高的通用套路,值得收进你的 snippet 库。

小结:统计 ACF 数组字段数量 = 一个通用计数函数 + echo 动态数据 + 条件逻辑。Gallery、Relationship、多选字段全部通用,免费且零依赖。

需要帮忙?

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

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

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