FLBuilderModel class (class-fl-builder-model.php) provides methods for creating, reading, updating, and deleting layout nodes.
Node Types
Layouts consist of four node types:Rows
Top-level containers that define horizontal sections of a layout.
Column Groups
Container for columns within a row, defining the column structure.
Columns
Vertical containers within column groups that hold modules.
Modules
Content elements (text, images, forms, etc.) placed within columns.
Layout Data Structure
Layouts are stored as serialized arrays of node objects in post meta with the key_fl_builder_data.
Node Object Structure
Example Layout Structure
FLBuilderModel Class
TheFLBuilderModel class provides the API for working with layout data.
Getting Layout Data
From class-fl-builder-model.php:Working with Nodes
Get Single Node
Get Single Node
From class-fl-builder-model.php:1216-1238:
Get Multiple Nodes
Get Multiple Nodes
From class-fl-builder-model.php:1240-1292:
Get Child Nodes
Get Child Nodes
From class-fl-builder-model.php:1420-1455:
Get Nested Nodes
Get Nested Nodes
From class-fl-builder-model.php:1457-1489:
Get Categorized Nodes
Get Categorized Nodes
From class-fl-builder-model.php:1491-1574:
Node Settings
From class-fl-builder-model.php:1576-1654:Creating Nodes
- Add Row
- Add Column
- Add Module
Updating Nodes
Deleting Nodes
Moving and Reordering
Node IDs
From class-fl-builder-model.php:1166-1213:Draft vs Published Data
Beaver Builder maintains separate draft and published layout data:- Draft Data
- Published Data
Node Status
From class-fl-builder-model.php:804-818:Saving Layouts
Global Settings
Global settings control default values for all layouts:Layout Settings
Layout-specific settings override global defaults:Post Meta Keys
Beaver Builder uses these post meta keys:| Meta Key | Description | Data Type |
|---|---|---|
_fl_builder_enabled | Whether builder is enabled for post | Boolean (1/0) |
_fl_builder_data | Published layout node data | Serialized array |
_fl_builder_draft | Draft layout node data | Serialized array |
_fl_builder_data_settings | Published layout settings | Serialized object |
_fl_builder_draft_settings | Draft layout settings | Serialized object |
Working with Templates
Node templates (global rows, columns, modules):Best Practices
Use Helpers
Use
get_nodes() instead of parsing layout data manually.Check Status
Always consider draft vs published status when working with data.
Validate IDs
Verify node IDs exist before performing operations.
Respect Hierarchy
Maintain proper parent-child relationships when creating nodes.
Programmatic Layout Creation
Example: Create a layout programmaticallyRelated Resources
AJAX Operations
Learn about AJAX data operations
CSS & JS Assets
Asset generation from layout data
Custom Modules
Create modules that work with the data model
Hooks Reference
Filter hooks for data manipulation