'EPPRO_Advanced_Button_Widget', 'advanced-faq' => 'EPPRO_Advanced_FAQ_Widget', 'form' => 'EPPRO_Form_Widget', 'mega-menu' => 'EPPRO_Mega_Menu_Widget', 'advanced-slider' => 'EPPRO_Advanced_Slider_Widget', 'advanced-tabs' => 'EPPRO_Advanced_Tabs_Widget', 'advanced-search' => 'EPPRO_Advanced_Search_Widget', 'breadcrumbs' => 'EPPRO_Breadcrumbs_Widget', 'pricing-table' => 'EPPRO_Pricing_Table_Widget', 'gallery-pro' => 'EPPRO_Gallery_Pro_Widget', 'post-grid' => 'EPPRO_Post_Grid_Widget', 'off-canvas' => 'EPPRO_Off_Canvas_Widget', 'stats-counter' => 'EPPRO_Stats_Counter_Widget', 'before-after' => 'EPPRO_Before_After_Widget', 'logo-grid' => 'EPPRO_Logo_Grid_Widget', 'team-member' => 'EPPRO_Team_Member_Widget', 'icon-box' => 'EPPRO_Icon_Box_Widget', 'image-box' => 'EPPRO_Image_Box_Widget', 'timeline' => 'EPPRO_Timeline_Widget', /* ── New widgets ── */ 'fancy-heading' => 'EPPRO_Fancy_Heading_Widget', 'image-carousel' => 'EPPRO_Image_Carousel_Widget', 'lottie' => 'EPPRO_Lottie_Widget', 'pie-chart' => 'EPPRO_Pie_Chart_Widget', 'author-box' => 'EPPRO_Author_Box_Widget', 'related-posts' => 'EPPRO_Related_Posts_Widget', 'google-map' => 'EPPRO_Google_Map_Widget', 'woo-products' => 'EPPRO_Woo_Products_Widget', 'woo-mini-cart' => 'EPPRO_Woo_Mini_Cart_Widget', 'woo-add-to-cart' => 'EPPRO_Woo_Add_To_Cart_Widget', 'post-comments' => 'EPPRO_Post_Comments_Widget', 'site-logo' => 'EPPRO_Site_Logo_Widget', 'nav-menu' => 'EPPRO_Nav_Menu_Widget', 'site-title' => 'EPPRO_Site_Title_Widget', 'site-tagline' => 'EPPRO_Site_Tagline_Widget', 'post-title' => 'EPPRO_Post_Title_Widget', 'post-content' => 'EPPRO_Post_Content_Widget', 'post-featured-image' => 'EPPRO_Post_Featured_Image_Widget', 'post-excerpt' => 'EPPRO_Post_Excerpt_Widget', 'post-meta' => 'EPPRO_Post_Meta_Widget', 'archive-title' => 'EPPRO_Archive_Title_Widget', 'archive-description' => 'EPPRO_Archive_Description_Widget', 'post-navigation' => 'EPPRO_Post_Navigation_Widget', /* ── Previously unregistered widgets ── */ 'animated-heading' => 'EPPRO_Animated_Heading_Widget', 'countdown-timer' => 'EPPRO_Countdown_Timer_Widget', 'flip-box' => 'EPPRO_Flip_Box_Widget', 'hotspot' => 'EPPRO_Hotspot_Widget', 'price-list' => 'EPPRO_Price_List_Widget', 'progress-bar' => 'EPPRO_Progress_Bar_Widget', 'social-icons' => 'EPPRO_Social_Icons_Widget', 'testimonial' => 'EPPRO_Testimonial_Widget', 'video' => 'EPPRO_Video_Widget', ]; // ------------------------------------------------------------------------- public static function register_category( $elements_manager ): void { try { $elements_manager->add_category( 'eppro-elements', [ 'title' => __( 'Essential Pro Pack', 'admore-widgets-suite' ), 'icon' => 'fa fa-plug', ] ); } catch ( \Throwable $e ) { eppro_log( 'EPP register_category error: ' . $e->getMessage() ); } } public static function register_widgets( $widgets_manager ): void { static $registered = false; if ( $registered ) return; $registered = true; try { require_once EPPRO_PATH . 'core/base/base-widget.php'; } catch ( \Throwable $e ) { eppro_log( 'EPP base-widget load error: ' . $e->getMessage() ); return; } if ( ! class_exists( 'EPPRO_Base_Widget' ) ) { return; } $disabled = self::get_disabled_widgets(); foreach ( (array) glob( EPPRO_PATH . 'widgets/*/widget.php' ) as $file ) { if ( ! $file ) continue; $folder = basename( dirname( $file ) ); if ( in_array( $folder, $disabled, true ) ) { continue; } $class = self::CLASS_MAP[ $folder ] ?? null; if ( ! $class ) { continue; } try { $walker = dirname( $file ) . '/class-walker.php'; if ( file_exists( $walker ) ) { require_once $walker; } require_once $file; if ( class_exists( $class ) ) { $widgets_manager->register( new $class() ); } } catch ( \Throwable $e ) { eppro_log( 'EPP widget registration error [' . $class . ']: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine() ); } } } // ------------------------------------------------------------------------- /** * Returns an array of widget folder names that are disabled in settings. */ private static function get_disabled_widgets(): array { if ( ! class_exists( 'EPPRO_Admin_Settings' ) ) { return []; } $settings = EPPRO_Admin_Settings::get_settings(); return $settings['disabled_widgets'] ?? []; } }