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

首页 / 中文教程 / 教程

Bricks 判断 ACF Repeater 是否有数据行:条件输出进阶

教程:在 Bricks 里用自定义函数判断 ACF Repeater 字段是否有数据行,从而条件显示元素。解决基础类型条件判断搞不定的数组型字段。

Ray ChanRay Chan·2026-08-18·约 1 分钟
目录
  1. 1.问题背景
  2. 2.核心思路:自定义函数返回布尔
  3. 3.代码实现
  4. 4.在 Bricks 里白名单并调用
  5. 5.小结

Bricks 判断 ACF Repeater 是否有数据行:条件输出进阶

Bricks 原生支持根据 ACF 基础类型字段(如 Text)是否有值来做条件输出——在动态数据条件里选 != 并把值留空即可。比如字段 header_notice 非空时才显示某个元素。

但字段类型是 ACF Repeater(返回数组)时,原生条件判断就不够用了。这篇教你用自定义函数搞定。

本文基于 BricksLabs 公开免费教程实译,代码完整可复用。原文:Checking for ACF Repeater rows in Bricks

核心思路:自定义函数返回布尔

我们需要定义一个返回 true(1) 或 false(0) 的自定义函数,然后在 Bricks 条件里用 = 1(判断非空)或 != 1(判断为空)来条件输出。

代码实现

在子主题 functions.php(去掉开头 <?php 标签)或代码片段插件里加入:

// 检查给定 ACF Repeater 字段是否有数据行
function bl_have_rows( $field ) {
  // 若 ACF 未启用,返回 false
  if ( ! class_exists( 'ACF' ) ) {
    return false;
  }

  return get_field( $field ) ? true : false;
}

在 Bricks 里白名单并调用

Bricks 出于安全考虑,默认只允许调用白名单内的函数。把 bl_have_rows 加入白名单:

add_filter( 'bricks/code/echo_function_names', function() {
  return [
    'bl_have_rows'
  ];
} );

之后在 Bricks 的条件设置里,就可以用 bl_have_rows('你的repeater字段名') 配合 = 1 / != 1 来控制元素显示。

小结

  • 基础类型字段:直接用 Bricks 原生 != 空值 条件
  • Repeater 等数组型字段:自定义 bl_have_rows() 函数 + 白名单钩子
  • 条件值用 = 1(有数据行)或 != 1(无数据行)

这个方法同样适用于其他返回数组的 ACF 字段类型。

延伸阅读

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.

延伸阅读