Skip to main content
The FLBuilderModel class handles all database operations and data management for Beaver Builder. It provides methods for creating, retrieving, updating, and deleting layout data.

Overview

The FLBuilderModel class is defined in classes/class-fl-builder-model.php and is responsible for:
  • Layout data storage and retrieval
  • Node (row, column, module) management
  • Template handling
  • Settings management
  • Module registration

Class Properties

Row Layouts

$row_layouts
array
Predefined column sizes for each row layout type.
FLBuilderModel::$row_layouts = array(
    '1-col'              => array( 100 ),
    '2-cols'             => array( 50, 50 ),
    '3-cols'             => array( 33.33, 33.33, 33.33 ),
    '4-cols'             => array( 25, 25, 25, 25 ),
    '5-cols'             => array( 20, 20, 20, 20, 20 ),
    '6-cols'             => array( 16.65, 16.65, 16.65, 16.65, 16.65, 16.65 ),
    'left-sidebar'       => array( 33.33, 66.66 ),
    'right-sidebar'      => array( 66.66, 33.33 ),
    'left-right-sidebar' => array( 25, 50, 25 ),
);
Source: class-fl-builder-model.php:18-28

Module Properties

$settings_forms
array
Registered settings forms for modules, rows, and columns.
$modules
array
Instances of all registered modules.
$module_aliases
array
Module aliases with custom names and settings.

Key Methods

Layout Management

get_layout_data()

Retrieves the layout data for a post.
$layout_data = FLBuilderModel::get_layout_data( 'published', $post_id );
type
string
required
Either 'published' or 'draft'
post_id
int
The post ID. Defaults to current post.
Returns: (array) Layout data with nodes keyed by node ID

save_layout()

Saves the current layout data.
FLBuilderModel::save_layout( $publish = false, $exit = false );
publish
bool
Whether to publish the layout (true) or save as draft (false)
exit
bool
Whether to exit the builder after saving
Actions:
  • fl_builder_before_save_layout - Fires before layout is saved
  • fl_builder_after_save_layout - Fires after layout is saved
Source: class-fl-builder-model.php (multiple methods)

delete_all_asset_cache()

Deletes all cached CSS and JS files for a post.
FLBuilderModel::delete_all_asset_cache( $post_id );
post_id
int
The post ID. Defaults to current post.

Node Management

get_node()

Retrieves a specific node (row, column, or module) by ID.
$node = FLBuilderModel::get_node( $node_id );
node_id
string
required
The unique node ID
Returns: (object|null) Node object or null if not found

delete_node()

Deletes a node and all its children.
FLBuilderModel::delete_node( $node_id );
node_id
string
required
The node ID to delete
Returns: (array) Updated layout data

move_node()

Moves a node to a new parent and position.
FLBuilderModel::move_node( $node_id, $new_parent, $position );
node_id
string
required
The node ID to move
new_parent
string
required
The new parent node ID
position
int
required
The position in the new parent (0-indexed)

Module Registration

register_module()

Registers a custom module class.
FLBuilder::register_module( 'MyCustomModule', array(
    'name'        => 'My Custom Module',
    'description' => 'A custom module for Beaver Builder',
    'category'    => 'Basic',
    'dir'         => __DIR__ . '/modules/my-module/',
    'url'         => plugins_url( 'modules/my-module/', __FILE__ ),
));
class
string
required
The module class name
config
array
required
Module configuration array
Filter: fl_builder_register_module - Modify module registration

Settings Management

get_global_settings()

Retrieves the global builder settings.
$settings = FLBuilderModel::get_global_settings();
Returns: (object) Global settings object Filter: fl_builder_get_global_settings - Modify global settings

save_global_settings()

Saves the global builder settings.
FLBuilderModel::save_global_settings( $settings );
settings
array
required
Settings array to save
Action: fl_builder_global_settings_saved - Fires after settings are saved

get_enabled_modules()

Retrieves the list of enabled modules.
$enabled = FLBuilderModel::get_enabled_modules();
Returns: (array) Array of enabled module slugs, or ['all'] if all are enabled

Template Methods

get_template_selector()

Retrieves template data for the template selector.
$templates = FLBuilderModel::get_template_selector();
Returns: (array) Array of template categories and templates

apply_template()

Applies a template to the current layout.
FLBuilderModel::apply_template( $template_id, $append = false );
template_id
string
required
The template ID or path to .dat file
append
bool
Whether to append (true) or replace (false) existing content

Layout Data Structure

Layout data is stored as an array of node objects, keyed by node ID:
array(
    'row_id_123' => (object) array(
        'node'     => 'row_id_123',
        'parent'   => null,
        'type'     => 'row',
        'position' => 0,
        'settings' => (object) array( /* row settings */ )
    ),
    'column_id_456' => (object) array(
        'node'     => 'column_id_456',
        'parent'   => 'row_id_123',
        'type'     => 'column',
        'position' => 0,
        'settings' => (object) array( /* column settings */ )
    ),
    'module_id_789' => (object) array(
        'node'     => 'module_id_789',
        'parent'   => 'column_id_456',
        'type'     => 'button',
        'position' => 0,
        'settings' => (object) array( /* module settings */ )
    )
)

Usage Examples

Get Layout Data

// Get published layout for current post
$layout = FLBuilderModel::get_layout_data();

// Get draft layout for specific post
$draft = FLBuilderModel::get_layout_data( 'draft', 123 );

// Loop through nodes
foreach ( $layout as $node_id => $node ) {
    echo $node->type . ': ' . $node_id . '<br>';
}

Check if Builder is Enabled

if ( FLBuilderModel::is_builder_enabled( $post_id ) ) {
    echo 'Beaver Builder is enabled for this post';
}

Get All Modules

$modules = FLBuilderModel::$modules;
foreach ( $modules as $slug => $module ) {
    echo $module->name . ' (' . $slug . ')<br>';
}

Clear Cache for Post

// Clear cache after programmatic changes
FLBuilderModel::delete_all_asset_cache( $post_id );

FLBuilder

Main builder class with UI and rendering

FLBuilderModule

Base class for module development

Data Model Guide

Learn about the layout data structure

Custom Modules

Create custom modules

Best Practices

Always clear the cache after programmatic layout changes:
FLBuilderModel::delete_all_asset_cache( $post_id );
Direct manipulation of layout data should be done carefully. Always validate node structure and relationships.
Use the provided AJAX methods through FLBuilderAJAX for operations in the builder UI. Direct model methods are for programmatic operations.

Source Code Reference

  • File: classes/class-fl-builder-model.php
  • Since: Version 1.0
  • Version: 2.10.1.1

Build docs developers (and LLMs) love