首页 / 中文教程 / 教程

Bricks 自定义动态数据标签入门:把自定义标签加进『选择动态数据』列表

Bricks 里注册自己的动态数据标签,让自定义数据出现在动态数据选择器里。付费原文锁定,给出官方钩子补全实现(Parent link 案例)。

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

⚠️ 原文为 BricksLabs Pro 付费教程(2023 年,当时靠复制主题内 providers.php 实现),代码锁定。本文用 Bricks 官方钩子补全实现并标注「补全实现」,比旧方案更省事、可升级。

背景:{echo:函数} 之外的更优做法

Bricks 里可以用 { echo:函数名 } 输出任意函数的返回值,甚至传参。但有两个不便:

  1. 团队协作时,成员记不住函数名,手写容易错。
  2. {echo:} 标签不会出现在“选择动态数据”(Select dynamic data)的列表里,编辑器里没法点选,只能靠记忆手打。

更舒服的做法是注册自己的动态数据标签:标签出现在动态数据选择器里,点选即用,参数在界面上填。原文以“Parent link”标签为例——选中后,把当前文章/循环项的链接设为其父级文章/页面的链接,没有父级则设为 #

期望效果:在动态数据选择器里出现 {parent_link} 选项;选中后输出当前文章父级的 URL(WordPress 层级页面/文章的 post_parent)。这是展示“官方动态数据标签注册机制”的绝佳入门案例——逻辑简单,但完整走一遍标签注册全流程。

Step 1:官方钩子注册标签(补全实现)

Bricks 官方钩子 bricks/dynamic_data/tags 注册标签,放入子主题 functions.php(去掉开头 <?php):

// 补全实现:注册 {parent_link} 动态数据标签,非原文代码
add_filter( 'bricks/dynamic_data/tags', function( $tags ) {
    $tags['parent_link'] = [
        'label' => 'Parent Link',
        'render' => 'bl_render_parent_link',
    ];
    return $tags;
} );

Step 2:渲染逻辑

// 补全实现:渲染 {parent_link} 标签值,非原文代码
function bl_render_parent_link( $tag, $post, $context, $name ) {
    // 取当前文章的父级 ID(WordPress 层级文章才有)
    $parent_id = wp_get_post_parent_id( $post->ID );

    // 有父级:返回父级链接;没有:返回 #
    return $parent_id ? get_permalink( $parent_id ) : '#';
}

使用场景举例:

  • 子页面模板里加一个“返回上级”文本链接,动态数据选 {parent_link},URL 自动指向父页面。
  • 产品类层级结构(分类页 → 产品组 → 产品)中,循环项链接统一指向父级。
  • 循环外使用:$post 自动是当前页面对象,逻辑同样成立。

如果你想让标签接受参数(比如限制在某文章类型内),在 $tag['args'] 里读取冒号后的参数即可,渲染函数里做判断。

补充:原文 2023 年的实现方式是复制 /wp-content/themes/bricks/includes/integrations/dynamic-data/providers.php 到子主题再修改类名——那是当时没有官方钩子的临时方案,主题更新容易冲突,已不推荐。bricks/dynamic_data/tags 是 Bricks 长期维护的官方入口,功能等价且无升级风险。

中文小结

注册自定义动态数据标签的完整套路:bricks/dynamic_data/tags 过滤器声明 标签名 → label + render 回调,render 回调接收 ($tag, $post, $context, $name) 返回字符串,标签即可出现在动态数据选择器里并正常渲染。相比 {echo:函数},它的优势是编辑器可点选、参数结构化、语义清晰。凡是“需要把某个 PHP 计算结果暴露给模板”的场景——父级链接、兄弟文章链接、上/下篇文章、条件计数等——都值得做成自定义标签,这是 Bricks 动态数据体系里最有复用价值的能力之一。

需要帮忙?

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

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

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