Extending Elements class is done by adding the following filter and actions:
class Elements { public function __construct() { add_filter( 'zionbuilder/elements/categories', [ $this, 'add_elements_categories' ] ); add_action( 'zionbuilder/elements_manager/register_elements', [ $this, 'register_elements' ] ); add_action( 'zionbuilder/editor/before_scripts', [ $this, 'enqueue_scripts' ] ); } }
Registering a new element category
Registering a new category is done by applying the filter
'zionbuilder/elements/categories'
A category is an array with the following structure:
public function add_elements_categories( $categories ) { return [ [ 'id' => 'category_id', 'name' => __( 'My Category', 'text-domain' ), 'priority' => 10, ], ] }
Registering elements
The final function for registering the new elements should look as the following:
public $elements_manager = null; public function register_elements( $elements_manager ) { $new_elements = [ 'MyElement', ] foreach ( $new_elements as $element_name ) { $file_path = Utils::get_file_path( 'includes/Elements/' . trailingslashit( $element_name ) . $element_name . '.php' ); if ( is_file( $file_path ) ) { include $file_path; // Normalize class name $class_name = str_replace( '-', '_', $element_name ); $class_name = __NAMESPACE__ . '\\Elements\\' . $class_name; $elements_manager->register_element( new $class_name() ); } } }