hero tutoriel bricksattitude
hero tutoriel bricksattitude
hero tutoriel bricksattitude
hero tutoriel bricksattitude

Rendre une section “En brouillon”

Un article que vous avez peut-être manqué sur BricksLabs vous donnes un snippet qui permet de mettre En brouillon une section et ne pas l’afficher sur le front-end.

// Add Section Status Control & Settings + Render
add_filter( 'bricks/elements/section/control_groups', function( $control_groups ) {
	$control_groups['draft_controls'] = [
		'tab' => 'content', // or '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;
} );

add_filter( 'bricks/element/render', function( $render, $element ) {
	if ( $element->name === 'section' && isset( $element->settings["draft_controls_active"] ) && $element->settings["draft_controls_active"] == true ) {
		$render = false;
	}

	return $render;
}, 10, 2 );

Vous pouvez également utiliser ce snippet sur tous les éléments du builder avec celui-ci

// Add Draft status control groups and control to all the elements.
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 status', 'my_plugin' ),
		'type' => 'checkbox',
	];

	return $controls;
}

add_filter( 'bricks/element/render', function( $render, $element ) {
	if ( isset( $element->settings["draft_controls_active"] ) && $element->settings["draft_controls_active"] == true ) {
		$render = false;
	}

	return $render;
}, 10, 2 );

Un petit snippet très utile dans certains cas !