🆕 Bricks 2.4 已发布:查询循环性能提升 40%,迁移教程同步更新 →

首页 / 中文教程 / 教程

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

教程:Bricks 按 ACF Gallery 图片数量做动态条件输出——acf 附完整代码可直接复用,适合外贸独立站与 WordPress 开发者。

Ray ChanRay Chan·2026-08-11·约 2 分钟
目录
  1. 1.场景:按图片数量决定显示什么
  2. 2.Step 1:注册数组计数函数
  3. 3.Step 2:echo 标签与条件判断
  4. 4.原理说明
  5. 5.小结

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

做作品集、房源或酒店类站点时经常遇到这样的需求:每篇文章(或循环项)通过 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 返回 false 或 null)也不会报错——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 多选)都能用同一个函数统计数量。

相关阅读:

更多用法与注意事项

这个计数函数不限于 Gallery:Relationship、Taxonomy 多选、Checkbox 多选等任何返回数组的 ACF 字段都能直接复用。几个注意点:

  • 函数放子主题 functions.php 或代码片段插件,别放进会被主题更新覆盖的文件;
  • PHP 8 下字段为空时 count(false) 会抛警告,稳妥写法是先 is_array() 判断再计数(见上文 Step 1);
  • {echo:...} 有函数白名单:前端不输出时,先检查是否用 bricks/code/echo_function_names 过滤器放行了你的函数。

把这几个点记牢,这套「数组长度 → 动态数据」的套路就能到处复用。

小结

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

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

常见问题(FAQ)

Q:这个计数函数要装插件吗? A:不用,一行 PHP 函数加进子主题的 functions.php(或代码片段插件)即可,零依赖。

Q:除了 Gallery,还能数什么? A:任何返回数组的 ACF 字段都行:Relationship、Taxonomy 多选、Checkbox 多选,统计逻辑完全一样。

Q:{echo:...} 标签在前端不输出怎么办? A:{echo:...} 默认有函数白名单,确认是否通过 bricks/code/echo_function_names 过滤器放行了函数名,放行后再试。

Q:在查询循环里会每项单独计算吗? A:会。动态数据在循环里逐项求值,每张卡片按各自字段的图片数量做条件判断,互不影响。

Q:字段为空时会报错吗? A:函数返回值声明为 int,字段为空返回 0;PHP 8 下 count() 对非数组会抛警告,建议先用 is_array() 判断再计数。

延伸阅读

Ray Chan

站长

Ray Chan

WordPress Developer & Bricks Specialist

WordPress developer with 10+ years of client builds. Switched to Bricks in 2023 — now builds fast WordPress sites and migrates legacy Elementor/Divi projects.

延伸阅读