Manage Back office with Blocktree This plugin requires: Example Basic markup: echo \Blocktree\Plugin::$instance->get_markup($widget_name, $settings); Set a shortcode used blocktree markup: do_shortcode('[blocktree component-name="my_widget_name" value="123" /]'); Add simple page & sub page used blocktree markup: add_action('admin_menu', function() { add_menu_page( $page_title, $menu_title, $capability, $menu_slug, function() use ( $widget_name, $settings ) { echo \Blocktree\Plugin::$instance->get_markup($component_name, $settings = [], $handler_key); }, $icon_url, $position ); add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, function() use ( $widget_name, $settings ) { echo \Blocktree\Plugin::$instance->get_markup($component_name, $settings = [], $handler_key); }, $position ); }); Elementor widget-render example: class MyElementorWidget extends Widget_Base { protected function render() { $widget_name = $this->get_name(); $settings = $this->get_data(); if ($settings) { $settings = $settings['settings']; } echo \Blocktree\Plugin::$instance->get_markup($component_name, $settings = [], $handler_key); } }