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

首页 / 中文教程 / 教程

Bricks 给区块加草稿状态开关:编辑器里隐藏未定稿区块

教程:用代码片段给 Bricks 所有元素加一个“草稿状态”勾选框,勾选后前端不输出。适合临时隐藏未定稿区块(Bricks 2.0 已原生内置,本文作历史方案参考)。

Ray ChanRay Chan·2026-08-18·约 2 分钟
目录
  1. 1.背景
  2. 2.实现思路
  3. 3.代码:给 Section 加草稿开关
  4. 4.代码:批量给所有元素加开关
  5. 5.现状说明

Bricks 给区块加草稿状态开关:编辑器里隐藏未定稿区块

在 Bricks 编辑器里搭页面时,经常有“这个区块还没定稿、先别让它上线”的需求。原生可以用 Conditions 功能隐藏,但 Laurent Drapeau 在 Bricks Facebook 群里分享了一段更方便的代码片段:给元素加一个 Draft 勾选框,勾上就不输出到前端。

本文基于 BricksLabs 公开免费教程实译。原文:Draft status control for Sections in Bricks

实现思路

通过 Bricks 的 bricks/elements/{name}/control_groupsbricks/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)起已原生内置此功能——你可以直接在元素设置里设为草稿状态,无需再贴这段代码。本文保留作为历史方案参考,或用于需要自定义勾选逻辑的场景。

延伸阅读

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.

延伸阅读