class short name. * * @var array */ private $widgets = array( 'advance-slider' => 'Advance_Slider_Widget', 'post-slider' => 'Post_Slider_Widget', 'testimonial-slider' => 'Testimonial_Slider_Widget', 'logo-carousel' => 'Logo_Carousel_Widget', 'thumbnail-slider' => 'Thumbnail_Slider_Widget', 'team-slider' => 'Team_Slider_Widget', ); /** * Get the singleton instance. * * @return Plugin */ public static function instance() { if ( null === self::$instance ) { self::$instance = new self(); } return self::$instance; } /** * Register hooks. */ private function __construct() { add_action( 'elementor/elements/categories_registered', array( $this, 'register_category' ) ); add_action( 'elementor/frontend/after_register_scripts', array( $this, 'register_scripts' ) ); add_action( 'elementor/frontend/after_register_styles', array( $this, 'register_styles' ) ); add_action( 'elementor/widgets/register', array( $this, 'register_widgets' ) ); } /** * Add the panel category. * * @param \Elementor\Elements_Manager $elements_manager Elements manager. */ public function register_category( $elements_manager ) { $elements_manager->add_category( self::CATEGORY, array( 'title' => esc_html__( 'Advance Slider', 'advance-elementor-slider' ), 'icon' => 'eicon-slider-push', ) ); } /** * Register the shared frontend script. * * Depends on the Swiper 8 copy Elementor already ships, so the page never * loads two Swiper builds. */ public function register_scripts() { wp_register_script( 'aels-slider', AELS_PLUGIN_URL . 'assets/js/advance-elementor-slider.js', array( 'jquery', 'elementor-frontend', 'swiper' ), AELS_VERSION, true ); } /** * Register the shared frontend stylesheet. */ public function register_styles() { wp_register_style( 'aels-slider', AELS_PLUGIN_URL . 'assets/css/advance-elementor-slider.css', array( 'e-swiper' ), AELS_VERSION ); } /** * Load and register every widget. * * @param \Elementor\Widgets_Manager $widgets_manager Widgets manager. */ public function register_widgets( $widgets_manager ) { require_once AELS_PLUGIN_PATH . 'includes/base/class-aels-slider-base.php'; foreach ( $this->widgets as $slug => $class_name ) { $file = AELS_PLUGIN_PATH . 'includes/widgets/class-aels-' . $slug . '-widget.php'; if ( ! file_exists( $file ) ) { continue; } require_once $file; $class = __NAMESPACE__ . '\\Widgets\\' . $class_name; if ( class_exists( $class ) ) { $widgets_manager->register( new $class() ); } } } }