需求场景
Bricks 官方群里有用户提了这样一个需求:产品详情页想根据用户选择了哪个产品属性值来显示对应内容。他有一个名为 difficulty(难度)的属性,取值有 very-easy、easy、moderate、hard 四档,希望每一档难度各显示一个对应的教学视频。
这类“属性值不同 → 页面内容不同”的需求很常见:颜色属性显示对应色卡、材质属性显示对应工艺说明、尺寸属性显示对应尺码表等等。
核心思路:属性即 Taxonomy
关键认知:WooCommerce 的产品属性(Product Attributes)本质上就是 taxonomy。每个全局属性在后台注册时都会生成一个对应的分类法(比如属性 color 对应 pa_color),属性值就是该分类法的术语(term)。
既然是 taxonomy,那么在 Bricks 里判断“当前产品的某个属性值是不是 X”,就和判断“当前文章的某个分类是不是 X”完全一样——直接用动态数据条件,不需要写任何 PHP。
配置动态数据条件
在 Bricks 编辑器中选中目标元素(比如视频区块),打开条件(Conditions)面板,添加一条动态数据条件,标签填:
{product_attribute:color:plain}
说明(对应原文截图中的用法):
color是属性名,替换成你自己的属性名(如difficulty);:plain是动态数据过滤器,作用是把输出中的超链接剥掉——因为产品属性默认渲染成带链接的 HTML(点击可跳到属性归档页),而条件比较需要的是纯文本值;- 条件的比较值填你想匹配的属性值,比如
Red。
配置后,只有当前产品的 color 属性等于 Red 时,该元素才会输出;其他属性值下自动隐藏。应用到 difficulty 场景,就是 four 个视频区块各挂一条“属性 = 对应难度”的条件,页面自动只显示匹配的那一个。
补充与小结
两个容易踩的坑:
- 属性必须是全局属性(Global attribute):在 产品 → 属性 里创建的全局属性才会注册成 taxonomy,产品编辑页里临时加的“自定义属性”不会生成
pa_分类法,无法用这个标签判断。个别产品属性若未开启“公开(public)”,旧版 Bricks 的动态数据下拉里可能不显示,先确认属性勾选了公开。 - 条件用的是产品页上下文:这个标签默认读取当前产品(single product)的属性。如果你要在 Query Loop 里对每个循环项判断,需要确保循环项上下文正确,必要时配合
{product_attribute:xxx}的循环内取值。
小结:本文展示的是 Bricks 条件渲染最实用的一类——把业务数据(产品属性)映射成 taxonomy,再用动态数据条件做显示控制。纯配置、零代码,维护起来也直观。配合 :plain 过滤器处理链接问题,是 Bricks + WooCommerce 定制产品页的高频套路。