首页 / 中文教程 / 教程

Bricks 中输出 ACF Relationship 关联文章的数量

用自定义函数统计当前文章 ACF Relationship 字段关联的文章数量,再通过 bricks/code/echo_function_names 白名单注册,在 Bricks 动态数据里直接输出数字。

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

场景:需要统计关联文章数

很多 Bricks 站点的内容结构都依赖 ACF 的 Relationship 字段:比如「国家 → 城市」这种一对多的关系,一个国家文章通过 related_cities 字段关联了若干篇城市文章。此时你想在国家的卡片或详情页上输出「该国家下共有 N 个城市」这样的统计数字,直接用 Bricks 自带的动态数据是拿不到的——默认只能输出关联文章列表,不能输出数量。

这个免费教程提供一个自定义函数,在任何需要的地方输出关联文章的数量,还能在查询循环(Query Loop)里针对每一篇循环项动态计算。

Step 1:注册统计函数

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

/**
 * Get the count of related posts for the current post
 * or a specific post ID
 *
 * @param string $field_name The relationship field name slug.
 * @param int $post_id Optional. The ID of the post. Defaults to current post ID.
 * @return int Number of related posts
 */
function bl_get_related_posts_count( string $field_name, int $post_id = 0 ): int {
  $post_id = $post_id ?: get_the_ID();

  $related_posts = get_field( $field_name, $post_id );

  if ( ! $related_posts || ! is_array( $related_posts ) ) {
	return 0;
  }

  return count( $related_posts );
}

用法示例:bl_get_related_posts_count( 'related_cities' ),其中 related_cities 就是你的 Relationship 字段名。如果字段为空或不是数组(比如单篇关联文章时 ACF 返回单个 ID),函数会安全地返回 0,不会报错。

Step 2:白名单 + echo 动态数据

Bricks 出于安全考虑,{echo:...} 动态数据标签默认只能调用白名单内的函数。要把自己的函数放行,再加一段:

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

然后在 Bricks 编辑器里,任意元素的动态数据输入框填入:

{echo:bl_get_related_posts_count(related_cities)}

即可实时输出当前文章的关联数量。如果页面有多个查询循环,函数默认取「当前循环项」的文章 ID,所以每个卡片都会显示各自对应的数字。

原理说明

  • get_field( $field_name, $post_id ) 是 ACF 的核心取字段函数,第二个参数传文章 ID 可以脱离「当前文章」上下文取值——这是函数支持 $post_id 参数的原因。
  • Relationship 字段返回的是数组(多选时),count() 直接得到数量;单选返回单个 ID 或字符串,函数里先判断 is_array() 再计数,避免 count() 报错。
  • bricks/code/echo_function_names 是 Bricks 官方的函数白名单过滤器,只有注册过的函数才能通过 {echo:...} 在构建器里执行。

小结

这个技巧的核心就两步:一个健壮的统计函数 + 一次白名单注册。之后在 Bricks 的任何动态数据位置(标题、按钮、徽章数字)都能输出关联数量,还能搭配条件逻辑做「有关联才显示」的复合判断。如果字段是 Meta Box 的 Relationship,思路完全一致,把 get_field 换成 rwmb_meta 即可。

小结:ACF Relationship 的数量统计不需要任何插件,两个函数搞定。关键是记住 bricks/code/echo_function_names 白名单这一步,忘了它 {echo:...} 不会生效。

需要帮忙?

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

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

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