117 lines
2.6 KiB
PHP
117 lines
2.6 KiB
PHP
|
<?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();
|