<?php /** * Main Opalestate_Elementor_Extended Class * * The main class that initiates and runs the plugin. */ final class Opalestate_Elementor_Extended { /** * Instance * * @access private * @static * * @var Opalestate_Elementor_Extended The single instance of the class. */ private static $_instance = null; /** * Instance * * Ensures only one instance of the class is loaded or can be loaded. * * @access public * @static * * @return Opalestate_Elementor_Extended An instance of the class. */ public static function instance() { if ( is_null( self::$_instance ) ) { self::$_instance = new self(); } return self::$_instance; } /** * Constructor * * @access public */ public function __construct() { add_action( 'plugins_loaded', [ $this, 'init' ] ); } /** * Initialize the plugin * * Load the plugin only after Elementor (and other plugins) are loaded. * Checks for basic plugin requirements, if one check fail don't continue, * if all check have passed load the files required to run the plugin. * * Fired by `plugins_loaded` action hook. * * @access public */ public function init() { // Check if Elementor installed and activated. if ( ! did_action( 'elementor/loaded' ) ) { return; } add_action( 'elementor/elements/categories_registered', [ $this, 'add_widget_categories' ] ); // Add Plugin actions. add_action( 'elementor/widgets/widgets_registered', [ $this, 'register_widgets' ] ); } /** * Add widget categories. * * @param object $elements_manager elements manager. */ public function add_widget_categories( $elements_manager ) { $elements_manager->add_category( 'opalestate-pro', [ 'title' => esc_html__( 'Opal Estate', 'opalestate-pro' ), 'icon' => 'fa fa-plug', ] ); } /** * Includes */ public function includes() { require OPALESTATE_PLUGIN_DIR . 'inc/vendors/elementor/class-opalestate-elementor-widget-base.php'; } /** * Init Widgets * * Include widgets files and register them * * @access public */ public function register_widgets() { $this->includes(); $widget_paths = glob( OPALESTATE_PLUGIN_DIR . 'inc/vendors/elementor/widgets/*.php' ); if ( $widget_paths ) { foreach ( $widget_paths as $path ) { require_once $path; $class_name = ucfirst( str_replace("-","_", basename( $path, '.php' ) ) ).'_Elementor_Widget'; if( class_exists($class_name) ){ \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new $class_name() ); } } } } } Opalestate_Elementor_Extended::instance();