Bricks 给区块加草稿状态开关:编辑器里隐藏未定稿区块
在 Bricks 编辑器里搭页面时,经常有“这个区块还没定稿、先别让它上线”的需求。原生可以用 Conditions 功能隐藏,但 Laurent Drapeau 在 Bricks Facebook 群里分享了一段更方便的代码片段:给元素加一个 Draft 勾选框,勾上就不输出到前端。
本文基于 BricksLabs 公开免费教程实译。原文:Draft status control for Sections in Bricks
实现思路
通过 Bricks 的 bricks/elements/{name}/control_groups 和 bricks/elements/{name}/controls 过滤器,往元素设置面板注入一个 checkbox 控件;勾选时给该元素打上草稿标记,前端渲染时跳过。
代码:给 Section 加草稿开关
// 给 Section 添加“草稿状态”控件组与设置
add_filter( 'bricks/elements/section/control_groups', function( $control_groups ) {
$control_groups['draft_controls'] = [
'tab' => 'content', // 或 'style'
'title' => esc_html__( 'Section Status', 'my_plugin' ),
];
return $control_groups;
} );
add_filter( 'bricks/elements/section/controls', function( $controls ) {
$controls['draft_controls_active'] = [
'tab' => 'content',
'group' => 'draft_controls',
'label' => esc_html__( 'Draft section', 'my_plugin' ),
'type' => 'checkbox',
];
return $controls;
} );
代码:批量给所有元素加开关
更彻底的做法——遍历 Bricks 所有已注册元素,统一挂载草稿控件:
// 给所有元素添加草稿状态控件组与控件
add_action( 'init', function() {
$elements = \Bricks\Elements::$elements;
$names = array_keys( $elements );
foreach( $names as $name ) {
add_filter( "bricks/elements/{$name}/control_groups", 'bl_add_control_groups' );
add_filter( "bricks/elements/{$name}/controls", 'bl_add_controls' );
}
}, 30 );
function bl_add_control_groups( $control_groups ) {
$control_groups['draft_controls'] = [
'tab' => 'content',
'title' => esc_html__( 'Set Draft Status', 'my_plugin' ),
];
return $control_groups;
}
function bl_add_controls( $controls ) {
$controls['draft_controls_active'] = [
'tab' => 'content',
'group' => 'draft_controls',
'label' => esc_html__( 'Draft', 'my_plugin' ),
'type' => 'checkbox',
];
return $controls;
}
现状说明
Bricks 2.0(beta)起已原生内置此功能——你可以直接在元素设置里设为草稿状态,无需再贴这段代码。本文保留作为历史方案参考,或用于需要自定义勾选逻辑的场景。
延伸阅读
延伸阅读
Bricks 判断 ACF Repeater 是否有数据行:条件输出进阶
教程:在 Bricks 里用自定义函数判断 ACF Repeater 字段是否有数据行,从而条件显示元素。解决基础类型条件判断搞不定的数组型字段。
tutorialBricks 按 ACF Options 字段条件显示元素(Pro 思路卡)
选题卡:只有当 ACF Options 页面上的某个字段(如 phone)有值时,才渲染带电话图标的容器。思路+钩子,完整代码见 BricksLabs Pro。
tutorialBricks Tabs 自动轮播:滚动到可视区自动切换标签页
教程:给 Bricks 的 Tabs(Nestable)元素加自动轮播——滚动到可视区域后每 x 秒自动切换标签页,适合首页产品/方案展示。
tutorialBricks 嵌套滑块做网格轮播:用 SplideJS 扩展实现多行多列
教程:在 Bricks 默认嵌套滑块(nested slider)里做出多行多列的网格轮播效果,用 SplideJS 的 grid 扩展实现,适合产品墙/案例墙展示。
