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

首页 / 中文教程 / 教程

Bricks 条件输出教程(Conditions in Bricks Builder)

Bricks 条件输出教程(Conditions in Bricks Builder)——Bricks 附完整代码可直接复用,适合外贸独立站与 WordPress 开发者。

Ray ChanRay Chan·2026-08-12·约 3 分钟

“登录用户与访客显示不同内容”

  • text: “检查循环中的文章是否属于某个分类”

  • text: “MemberPress:会员与非会员显示不同内容”

  • text: “搜索结果页:按是否有匹配结果渲染不同模板”

  • text: “文章有特色图片时显示条件区块”

  • text: “结论”

— 当时版本的 Bricks 还没有内置的条件(Conditions)功能——但这不代表不能用自定义代码手动实现。 这篇教程提供几个实用示例,演示如何在 Bricks 站点里让任意元素只在指定条件满足时输出。 总体流程: 1. 创建一个类型为「Section」的模板,把要条件显示的内容放进去;

  1. 在想要显示条件内容的位置添加 Code 元素,用 if 条件包住 do_shortcode() 函数;

  2. 如果条件基于自定义函数,记得把 if 条件包在 function_exists() 检查里(防止函数未定义时报错)。 这个方案的小缺点:条件不满足时,HTML 输出里会残留一个空的 div。 这些示例大多是在本站搭建过程中整理出来的。 > 注:测试环境为 Bricks 1.4 RC1。 ## 登录用户与访客显示不同内容 登录用户看到: 未登录访客看到: ### Step 1 创建一个类型为 Section 的模板,命名为 “Logged In”(登录)。 把要展示给登录用户的内容放进 Section 里的 Container 中(提示:点 + 之后,点 Container 元素左上角的小 Layout 图标可快速切换容器布局): ### Step 2 进入模板列表页面,把鼠标悬停在该模板上,通过浏览器状态栏 URL 记下它的 ID;或者把它的短代码复制到记事本。 在你想让登录用户看到内容的地方(页面/模板)添加一个 Code 元素,内容为: ```php

上面代码中把 `2485` 换成你自己的模板 ID。未登录用户在前端什么都看不到。 如果你想在未登录时显示另一个模板的内容,接着做 Step 3。 ### Step 3 再创建一个类型为 Section 的模板,命名为 "Not Logged In"(未登录)。 把未登录用户要看到的内容放进 Section 里的 Container 中: 把代码改成:php

按实际情况替换两个模板 ID:第一个短代码在用户登录时运行,第二个在未登录时运行。 ## 检查循环中的文章是否属于某个分类 本站的 posts 网格里,被归类为 "Pro" 的文章会显示一个 "Pro" 丝带(ribbon)。逻辑代码如下: ### Step 1 在子主题的 `functions.php` 中添加:php

/** * Function to check if the current post is assigned to Pro category * @return string “Pro” if in the specified category */

function bl_is_in_pro_category() { return in_category( ‘pro’ ) ? ‘Pro’ : ‘’;

}

### Step 2 在 Posts Grid 的 Section 模板里,丝带标题所在的 Code 元素中调用:php

这样丝带就只会出现在标记为 Pro 的文章上。 ## MemberPress:会员与非会员显示不同内容 MemberPress 是本站选用的会员插件。 自定义函数:php

/** * Function to check if the current user has access to the membership. * * @return bool True if the user has access, false if not. */

function bl_user_has_membership() { return current_user_can( ‘mepr-active’, ‘memberships:51,367’ );

}

其中 `51` 和 `367` 是要检查的会员 ID(membership ID)。 给**已授权会员**输出指定模板的 Code 元素示例:php

给**未授权用户**输出指定模板的 Code 元素示例:php

也可以用一个 Code 元素同时处理两种情况:php

> 译者注:原文中 `do_shortcode()` 内是本站「查看 300+ 教程」「Pro 访问」两个模板的短代码(正文为截图未抓取到),此处用 `YOUR_TEMPLATE_SHORTCODE` 占位,替换成你自己的 Bricks 模板短代码(形如 `[bricks_template id="XXX"]`)即可。参考:[MemberPress 高级规则](https://docs.memberpress.com/article/154-advanced-rule-features)。 ## 搜索结果页:按是否有匹配结果渲染不同模板 自定义函数:php

// Function to check if there is at least 1 search result.

function bl_has_search_results() { global $wp_query; return $wp_query->found_posts !== 0;

}

``` 用法示例:原文只给出函数本体,并说详细教程后续会出(后续已有专门教程,如 “At Least 1 Search Result Condition in Bricks”)。基本用法与上文一致:在搜索结果模板的 Code 元素里,根据 bl_has_search_results() 的返回值输出不同模板的短代码。 ## 文章有特色图片时显示条件区块 见专门教程:Conditional Section when Post has a Featured Image in Bricks。 > 相关阅读:

2026-08-17 更新:本文原始素材基于 Bricks 1.4 RC1 时代(内置 Conditions 尚未发布)。截至 2.3.x,Conditions 已是稳定内置功能,新项目直接用构建器里的 Conditions 面板即可,下文代码方案仅作老版本兼容/特殊逻辑参考。

2026-08-17 更新:本文原始素材基于 Bricks 1.4 RC1 时代(内置 Conditions 尚未发布)。截至 2.3.x,Conditions 已是稳定内置功能,新项目直接用构建器里的 Conditions 面板即可,下文代码方案仅作老版本兼容/特殊逻辑参考。

结论 在 Bricks 内置条件功能出现之前,这套「Section 模板 + Code 元素 + do_shortcode()」的组合就是标准做法:自定义函数判断条件 → Code 元素按条件输出不同模板的短代码。注意两点:①function_exists() 包住自定义函数调用更稳妥;②条件不满足时页面会残留一个空 div,介意的话需要额外处理。如今 Bricks 已内置条件功能,新项目优先用内置条件,本文方案适合老版本或特殊逻辑场景。

适用场景与常见误区

内置条件适合这些场景:按用户登录状态显示不同内容、按文章分类/标签换区块、按设备显隐元素、给特定页面套专属模块。常见误区:一是条件叠加时「与/或」关系没理清,结果该显示的不显示;二是把条件当权限控制用——它只控制前端显示,不替代 WordPress 权限;三是老文章还在用 do_shortcode() 组合,新项目直接用内置条件更干净。条件写在元素上,改起来比塞函数直观。

延伸阅读

常见问题(FAQ)

Bricks 内置条件能做什么? 按登录状态、分类标签、设备、页面类型等显示/隐藏元素,不用写代码。

条件能当权限用吗? 不能,它只控制前端显示,不替代 WP 后台权限;敏感内容要走权限校验。

「与/或」关系怎么设? 在条件面板里选组合方式,多个条件是同时满足还是任一满足要想清楚。

老站的 do_shortcode 方案还要留吗? 新项目优先用内置条件;老方案适合特殊逻辑或老版本兼容。

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.

延伸阅读