403Webshell
Server IP : 198.38.94.67  /  Your IP : 216.73.217.142
Web Server : LiteSpeed
System : Linux d6054.dxb1.stableserver.net 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64
User : azfilmst ( 1070)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/azfilmst/royalopus.ae/wp-content/plugins/residence-elementor/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/azfilmst/royalopus.ae/wp-content/plugins/residence-elementor/plugin.php
<?php

namespace ElementorWpResidence;

/**
 * Class Plugin
 *
 * Main Plugin class
 * @since 1.2.0
 */
class Plugin {

    /**
     * Instance
     *
     * @since 1.2.0
     * @access private
     * @static
     *
     * @var Plugin The single instance of the class.
     */
    private static $_instance = null;

    /**
     * Instance
     *
     * Ensures only one instance of the class is loaded or can be loaded.
     *
     * @since 1.2.0
     * @access public
     *
     * @return Plugin An instance of the class.
     */
    public static function instance() {
        if (is_null(self::$_instance)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * widget_scripts
     *
     * Load required plugin core files.
     *
     * @since 1.2.0
     * @access public
     */
    public function widget_scripts() {
        
    }

    /**
     * Include Widgets files
     *
     * Load widgets files
     *
     * @since 1.2.0
     * @access private
     */
    private function include_widgets_files() {

        // Load Helper functions/classes
        require_once( __DIR__ . '/functions/elementor-menu-mobile-walker.php' );
        require_once( __DIR__ . '/functions/elementor-menu-walker.php' );

        // Load Widgets files
        require_once( __DIR__ . '/widgets/helper.php' );
        require_once( __DIR__ . '/widgets/recent-items.php' );
        require_once( __DIR__ . '/widgets/recent-properties-top-bar.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider.php' );
        require_once( __DIR__ . '/widgets/list-items-by-id.php' );
        require_once( __DIR__ . '/widgets/places-slider.php' );
        require_once( __DIR__ . '/widgets/membership-package.php' );
        require_once( __DIR__ . '/widgets/featured-agency-developer.php' );
        require_once( __DIR__ . '/widgets/testimonial.php' );
        require_once( __DIR__ . '/widgets/google_map_property.php' );
        require_once( __DIR__ . '/widgets/list-items-agent.php' );
        require_once( __DIR__ . '/widgets/display_categories.php' );
        require_once( __DIR__ . '/widgets/list-agents.php' );
        require_once( __DIR__ . '/widgets/featured-agent.php' );
        require_once( __DIR__ . '/widgets/featured-article.php' );
        require_once( __DIR__ . '/widgets/featured-property.php' );
        require_once( __DIR__ . '/widgets/login-form.php' );
        require_once( __DIR__ . '/widgets/advanced-search.php' );
        require_once( __DIR__ . '/widgets/contact_us.php' );
        require_once( __DIR__ . '/widgets/contact_form_builder.php' );
        require_once( __DIR__ . '/widgets/properties_slider.php' );
        require_once( __DIR__ . '/widgets/full_map.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties.php' );
        require_once( __DIR__ . '/widgets/wpestate_tabs.php' );
        require_once( __DIR__ . '/widgets/wpestate_accordions.php' );
        require_once( __DIR__ . '/widgets/sliding-box.php' );
        require_once( __DIR__ . '/widgets/properties_slider_v2.php' );
        require_once( __DIR__ . '/widgets/properties_slider_v3.php' );
        require_once( __DIR__ . '/widgets/testimonial_slider.php' );
        require_once( __DIR__ . '/widgets/video_player.php' );
        require_once( __DIR__ . '/widgets/hotspot.php' );      
        require_once( __DIR__ . '/widgets/blog-list.php' );
        require_once( __DIR__ . '/widgets/favorites-list.php' );     
        require_once( __DIR__ . '/widgets/display_categories_as_tabs.php' );   
           
        require_once( __DIR__ . '/widgets/property_page_tab_details.php' );
        require_once( __DIR__ . '/widgets/property_page_accordion_details.php' );
 
        require_once( __DIR__ . '/widgets/property_page_simple_detail_section.php' );
        require_once( __DIR__ . '/widgets/property_page_slider_section.php' );
        require_once( __DIR__ . '/widgets/property_page_agent_card.php' );
        require_once( __DIR__ . '/widgets/property_page_agent_contact.php' );
        require_once( __DIR__ . '/widgets/property_page_related_listings.php' );
        require_once( __DIR__ . '/widgets/property_page_intext_details.php' );
        require_once( __DIR__ . '/widgets/property_page_design_gallery.php' );
        require_once( __DIR__ . '/widgets/property_page_agent_details_intext_details.php' );
    
        require_once( __DIR__ . '/widgets/propert_page_other_agents.php' );
        require_once( __DIR__ . '/widgets/taxonomy_list.php' );
     
        require_once( __DIR__ . '/widgets/wpresidence-grids.php' );
        require_once( __DIR__ . '/widgets/search_form_builder.php' );   
        require_once( __DIR__ . '/widgets/recent-items_card_v1.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v2.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v3.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v4.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v5.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v6.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v7.php' );
        require_once( __DIR__ . '/widgets/recent-items_card_v8.php' );

        require_once( __DIR__ . '/widgets/recent-items-slider_v1.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v2.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v3.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v4.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v5.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v6.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v7.php' );
        require_once( __DIR__ . '/widgets/recent-items-slider_v8.php' );



        require_once( __DIR__ . '/widgets/filter_list_properties_v1.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v2.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v3.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v4.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v5.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v6.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v7.php' );
        require_once( __DIR__ . '/widgets/filter_list_properties_v8.php' );
       
        
        require_once( __DIR__ . '/widgets/wpresidence-agent-grids.php' );
        require_once( __DIR__ . '/widgets/wpresidence-content-grid.php' );
        
        
        require_once( __DIR__ . '/widgets/wpresidence-scroll-spy.php' );
        require_once( __DIR__ . '/widgets/wpresidence-call-to-action.php' );
        // require_once( __DIR__ . '/widgets/wpresidence-properties-by-category.php' );
       // require_once( __DIR__ . '/widgets/advanced_filter_list_properties.php' );

        // Header Footer Widgets
        require_once( __DIR__ . '/widgets/header-footer/site-create-listing.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-currency-changer.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-language.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-login.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-logo.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-measurement-unit-changer.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-navigation.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-phone.php' );
        require_once( __DIR__ . '/widgets/header-footer/site-social.php' );
        require_once( __DIR__ . '/widgets/header-footer/wpresidence-properties-by-category.php' );


       // single agent widgets
        require_once( __DIR__ . '/widgets/agent/single-agent-meta.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-name.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-description.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-image.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-address.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-title.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-member-of.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-call-button.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-sendmail-button.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-whatsapp-button.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-star-reviews.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-social.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-custom-fields.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-specialities.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-reviews.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-contact-details.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-listings.php' );
        require_once( __DIR__ . '/widgets/agent/single-agent-contact-form.php' );



        // single agency widgets 
        require_once( __DIR__ . '/widgets/agency/single-agency-meta.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-name.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-description.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-image.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-excerpt.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-call-button.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-whatsapp-button.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-star-reviews.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-social.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-opening-hours.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-taxes.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-website.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-license.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-languages.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-specialities.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-reviews.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-map.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-contact-details.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-listings.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-agents-list.php' );
        require_once( __DIR__ . '/widgets/agency/single-agency-contact-form.php' );



        // single developers widgets 
        require_once( __DIR__ . '/widgets/developer/single-developer-meta.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-name.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-description.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-image.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-excerpt.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-call-button.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-whatsapp-button.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-star-reviews.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-social.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-opening-hours.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-taxes.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-website.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-license.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-languages.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-specialities.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-reviews.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-map.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-contact-details.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-listings.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-agents-list.php' );
        require_once( __DIR__ . '/widgets/developer/single-developer-contact-form.php' );



        // single post widgets 
        require_once( __DIR__ . '/widgets/single-post/single-post-title.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-content.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-excerpt.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-featured-image.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-author-box.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-comments.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-navigation.php' );

        require_once( __DIR__ . '/widgets/single-post/single-post-breadcrumbs.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-social.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-meta-info.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-related-posts.php' );
        require_once( __DIR__ . '/widgets/single-post/single-post-slider.php' );




        // single proprty widgets 
        require_once( __DIR__ . '/widgets/single-property-widgets/property_page_simple_detail.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-breadcrumbs.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-title.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-price.php' );     
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-price-info.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-address.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-addto-favorite.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-status.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-content.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-excerpt.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-featured_image.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_masonary_gallery1.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_masonary_gallery2.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_classic_slider.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_horizontal_slider.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_vertical_slider.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_three_items_slider.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property_full_width_slider.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-header-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-overview-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-description-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-address-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-details-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-features-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-video-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-map-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-virtual-tour-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-walkscore-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-calculator-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-floorplans-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-statistics-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-reviews-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-yelp-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-similar-listings-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-subunits-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-agec_form_v2-section.php' );
        require_once( __DIR__ . '/widgets/single-property-widgets/property-page-agec_form_v2-sidebar-section.php' );
        
        
        require_once( __DIR__ . '/widgets/single-property-widgets/property_page_schedule_tour.php' );



        require_once( __DIR__ . '/widgets/category_widgets/term-title.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-description.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-parent.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-city-location.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-featured-image.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-gallery.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-tagline.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term_custom_field_widget.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-maps.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-breadcrumbs.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term-header.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term_listings_number.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term_documents.php' );
        require_once( __DIR__ . '/widgets/category_widgets/term_listings.php' );

    }

    /**
     * Register Widgets
     *
     * Register new Elementor widgets.
     *
     * @since 1.2.0
     * @access public
     */
    public function register_widgets() {
        // Its is now safe to include Widgets files
        $this->include_widgets_files();
        
        
    //    \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_advanced());
        // Register Widgets
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Blog_Post_List());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Search_Form_Builder());
      
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items());
         \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Properties_Top_Bar());
         
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_ListItems_ByID());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Properties_Slider());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Places_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Display_Categories());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Display_Categories_As_Tabs());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Grids());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Taxonomy_List());
  

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_ListItems_Agent());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_List_Agents());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Featured_Agent());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Featured_Agency_Developer());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Featured_Article());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Featured_Property());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Advanced_Search());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Contact_Us());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Contact_Form_Builder());


        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Full_Map());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Google_Map_Property());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties());


        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Login_Form());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Membership_Package());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Testimonial());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Tabs());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Accordions());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Sliding_Box());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Properties_Slider_v2());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Properties_Slider_v3());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Testimonial_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Video_Player()); 
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_HotSpots());    
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Grids());  
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Favorite_List());  
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Content_grid());  
            
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V1());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V2());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V3());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V4());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V5());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V6());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V7());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_Card_V8());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v1());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v2());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v3());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v4());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v5());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v6());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v7());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Recent_Items_SLider_v8());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v1());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v2());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v3());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v4());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v5());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v6());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v7());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Filter_List_Properties_v8());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\WPresidence_Scroll_Spy_Widget());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Call_To_Action());




        // Header Footer Widgets
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Logo());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Navigation_Menu());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Login());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Create_Listing());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Currency_Changer());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Measurement_Unit_Changer());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Social());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Phone());       
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Site_Language());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Footer_Properties_By_Category());




        // single agent widgets 
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Single_Detail());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Single_Detail());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Address());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Member_Of());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Name());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Send_Mail());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Image());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Social());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Star_Reviews());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Title_Position());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Whatsapp_Button());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Description());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Call_Button());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Listings());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Custom_Fields());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Specialities());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Contact_Details());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agent_Reviews());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agent_Contact_Form());


        // single agency widgets 

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Single_Detail());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Single_Website());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Single_License());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Single_Opening_Hours());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Single_Taxes());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Single_Languages());
        
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Name());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Image());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Description());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Excerpt());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Social());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Whatsapp_Button());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Call_Button());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Star_Reviews());
        
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Specialities());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Contact_Details());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Reviews());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Agency_Map());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Listings());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Agents());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Agency_Contact_Form());


        // single developers widgets 

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Single_Detail());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Single_Website());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Single_License());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Single_Opening_Hours());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Single_Taxes());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Single_Languages());
        
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Name());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Image());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Description());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Excerpt());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Social());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Whatsapp_Button());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Call_Button());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Star_Reviews());
        
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Specialities());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Contact_Details());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Reviews());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Developer_Map());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Listings());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Agents());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Developer_Contact_Form());



        // single post widgets

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Title());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Content());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Excerpt());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Featured_Image());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Author_Box());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Navigation());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Comments());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Breadcrumbs());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Social());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Meta_Info());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Related_Posts());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Single_Post_Slider());


        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Title());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Breadcrumbs());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Price());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Additional_Price_Info());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Address());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Add_To_Favorites());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Status());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Content());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Excerpt());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Featured_Image());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Masonary_Gallery1());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Masonary_Gallery2());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Classic_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Horizontal_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Vertical_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Three_Items_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Full_Width_Slider());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Header_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Overview_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Description_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Address_Section());





        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Details_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Features_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Video_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Map_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Virtual_Tour_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Walkscore_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Calculator_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_FloorPlan_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Statistics_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Reviews_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Yelp_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Similar_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Subunits_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Agent_Form_Section());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Agent_Form2_Section());






    
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Tab_Details());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Accordion_Details());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Simple_Detail());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Detail_Section());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Agent_Card());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Agent_Contact());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Related_Listings());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Intext_Details());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Design_Gallery());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Agent_Details_Intext());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Other_Agents());
        
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Property_Page_Schedule_Tour());


        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Title());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Description());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Parent());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_City_Location());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Featured_Image());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Gallery());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Tagline());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpestate_Term_Custom_Field_Widget());

        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Map());


        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Page_Breadcrumbs());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Header());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Property_Count());
        \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Documents());

            \Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Wpresidence_Term_Listings());
    }

    /**
     * Adds custom Elementor widget categories and conditionally prioritizes specific categories
     * based on the post type and template being edited.
     * 
     * For 'wpestate-studio' post types, this method will move the relevant category to the top
     * of the Elementor widget panel based on the 'wpestate_head_foot_template' meta value:
     * - wpestate_single_property_page → wpresidence_property (first)
     * - wpestate_single_agent → wpestate_single_agent_category (first)
     * - wpestate_single_agency → wpestate_single_agency_category (first)
     * - wpestate_single_developer → wpestate_single_developer_category (first)
     * - wpestate_single_post → wpestate_single_post_category (first)
     * 
     * All other categories remain in their default positions.
     * 
     * @since 1.0.0
     * @param \Elementor\Elements_Manager $elements_manager The Elementor elements manager instance
     * @return void
     */
    public function add_elementor_widget_categories($elements_manager) {
        // ========================================
        // GET CURRENT POST INFORMATION
        // ========================================
        
        // Try to get the current post ID using multiple fallback methods
        // This ensures we can detect the post ID in various contexts (frontend, admin, AJAX)
        $post_id = get_the_ID();
        
        if (!$post_id) {
            // Fallback 1: Check $_GET for post ID (common in admin edit screens)
            if (isset($_GET['post'])) {
                $post_id = intval($_GET['post']);
            }
            
            // Fallback 2: Check $_POST for editor post ID (AJAX requests)
            if (!$post_id && isset($_POST['editor_post_id'])) {
                $post_id = intval($_POST['editor_post_id']);
            }
            
            // Fallback 3: Check for Elementor specific post ID
            if (!$post_id && isset($_POST['post_id'])) {
                $post_id = intval($_POST['post_id']);
            }
            
            // Fallback 4: Use global $post object
            if (!$post_id) {
                global $post;
                if ($post && isset($post->ID)) {
                    $post_id = $post->ID;
                }
            }
        }
        
        // Get the post type for the current post
        $post_type = '';
        if ($post_id) {
            $post_type = get_post_type($post_id);
        }
        
        // Get the template meta value that determines which widgets should be prioritized
        $template = '';
        if ($post_id) {
            $template = get_post_meta($post_id, 'wpestate_head_foot_template', true);
        }
        
        // ========================================
        // DETERMINE PRIORITY CATEGORY
        // ========================================
        
        // Check if we should prioritize a specific category and determine which one
        $priority_category = false;
        
        if ($post_type === 'wpestate-studio' && $post_id) {
            // Define mappings between template values and their corresponding widget categories
            // This allows each template type to have its most relevant widgets appear first
            $template_category_map = [
                'wpestate_single_property_page' => 'wpresidence_property',
                'wpestate_single_agent' => 'wpestate_single_agent_category',
                'wpestate_single_agency' => 'wpestate_single_agency_category',
                'wpestate_single_developer' => 'wpestate_single_developer_category',
                'wpestate_single_post' => 'wpestate_single_post_category',
                'wpestate_category_page' => 'category_widgets',
                
                'wpestate_template_header' => 'wpresidence_header',
                'wpestate_template_before_header' => 'wpresidence_header',
                'wpestate_template_after_header' => 'wpresidence_header',
                'wpestate_template_footer' => 'wpresidence_header',
                'wpestate_template_after_footer' => 'wpresidence_header',

                'wpestate_template_before_footer' => 'wpresidence_header',







            ];
            
            // Check if the current template has a corresponding priority category
            if (isset($template_category_map[$template])) {
                $priority_category = $template_category_map[$template];
            }
        }
        
        // ========================================
        // REGISTER WIDGET CATEGORIES
        // ========================================
        
        if ($priority_category) {
            // PRIORITY MODE: Register all categories and then reorder to put the priority one first
            
            // Register core WpResidence widget categories
            $elements_manager->add_category(
                'wpresidence', [
                    'title' => __('WpResidence Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-home',
                ]
            );
            
            $elements_manager->add_category(
                'wpresidence_property', [
                    'title' => __('WpResidence Property Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-home',
                ]
            );
            
            $elements_manager->add_category(
                'wpresidence_extented', [
                    'title' => __('WpResidence Property List Widgets with Card Variations', 'residence-elementor'),
                    'icon' => 'fa fa-home',
                ]
            );

            $elements_manager->add_category(
                'category_widgets', [
                    'title' => __('Category Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-folder',
                ]
            );
            
            // Register template-specific widget categories
            // Each category is designed for a specific page template type
            
            $elements_manager->add_category(
                'wpestate_single_agent_category', [
                    'title' => __('WpResidence Agent Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-user', // User icon for agent-related widgets
                ]
            );
            
            $elements_manager->add_category(
                'wpestate_single_agency_category', [
                    'title' => __('WpResidence Agency Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-building', // Building icon for agency-related widgets
                ]
            );
            
            $elements_manager->add_category(
                'wpestate_single_developer_category', [
                    'title' => __('WpResidence Developer Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-hammer', // Hammer icon for developer-related widgets
                ]
            );
            
            $elements_manager->add_category(
                'wpestate_single_post_category', [
                    'title' => __('WpResidence Post Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-newspaper', // Newspaper icon for post-related widgets
                ]
            );
               $elements_manager->add_category(
            'wpresidence_header', [
            'title' => __('WpResidence Header & Footer Widgets', 'residence-elementor'),
            'icon' => 'fa fa-home',
            ]
        );
            // Reorder categories to move the priority category to the top
            // This ensures the most relevant widgets appear first in the Elementor panel
            $this->reorder_categories_to_top($elements_manager, $priority_category);
            
        } else {
            // DEFAULT MODE: Register all categories in their natural order
            // This happens when not editing a wpestate-studio post or when no template priority is set
            
            // Register core WpResidence widget categories in default order
            $elements_manager->add_category(
                'wpresidence', [
                    'title' => __('WpResidence Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-home',
                ]
            );
            
            $elements_manager->add_category(
                'wpresidence_property', [
                    'title' => __('WpResidence Property Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-home',
                ]
            );
            
            $elements_manager->add_category(
                'wpresidence_extented', [
                    'title' => __('WpResidence Property List Widgets with Card Variations', 'residence-elementor'),
                    'icon' => 'fa fa-home',
                ]
            );

            $elements_manager->add_category(
                'category_widgets', [
                    'title' => __('Category Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-folder',
                ]
            );

            // Register template-specific categories in default order
            // These will appear at the bottom of the category list
            $elements_manager->add_category(
                'wpestate_single_agent_category', [
                    'title' => __('WpResidence Agent Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-user',
                ]
            );
            
            $elements_manager->add_category(
                'wpestate_single_agency_category', [
                    'title' => __('WpResidence Agency Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-building',
                ]
            );
            
            $elements_manager->add_category(
                'wpestate_single_developer_category', [
                    'title' => __('WpResidence Developer Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-hammer',
                ]
            );
            
            $elements_manager->add_category(
                'wpestate_single_post_category', [
                    'title' => __('WpResidence Post Page Widgets', 'residence-elementor'),
                    'icon' => 'fa fa-newspaper',
                ]
            );
        }
    }

    /**
     * Reorders Elementor widget categories to place a specific category at the top
     * 
     * This method uses a closure to access the private $categories property of the 
     * Elements_Manager and reorders it using uksort. Only the specified priority 
     * category is moved to the top - all other categories maintain their relative positions.
     * 
     * @since 1.0.0
     * @param \Elementor\Elements_Manager $elements_manager The Elementor elements manager instance
     * @param string $priority_category The category slug that should be moved to the top
     * @return void
     */
    private function reorder_categories_to_top($elements_manager, $priority_category) {
        // Create a closure that can access the private $categories property
        // This is necessary because Elementor doesn't provide a public method to reorder categories
        $reorder_cats = function() use($priority_category) {
            // Use uksort to reorder the categories array by key (category slug)
            uksort($this->categories, function($keyOne, $keyTwo) use($priority_category) {
                // Move the priority category to the top of the list
                if ($keyOne === $priority_category) {
                    return -1; // $keyOne comes before $keyTwo
                }
                if ($keyTwo === $priority_category) {
                    return 1; // $keyTwo comes before $keyOne
                }
                
                // For all other categories (including other wpresidence categories), 
                // maintain their original relative order by returning 0 (equal)
                return 0;
            });
        };
        
        // Execute the closure in the context of the $elements_manager object
        // This allows us to modify the private $categories property
        $reorder_cats->call($elements_manager);
    }







    function wpresidence_elementor_widgets_dependencies() {

        /* Scripts */
        wp_register_script( 'wpresidence-scroll-spy-script', plugins_url( 'assets/js/scroll-spy.js', __FILE__ ) );

        /* Styles */
        wp_register_style( 'wpresidence-call-to-action-style', plugins_url( 'assets/css/call-to-action.css', __FILE__ ) );
        wp_register_style( 'wpresidence-scroll-spy-style', plugins_url( 'assets/css/scroll-spy.css', __FILE__ ) );
        wp_register_style( 'wpresidence-author-box-style', plugins_url( 'assets/css/author-box.css', __FILE__ ) );
        wp_register_style( 'wpresidence-post-navigation-style', plugins_url( 'assets/css/post-navigation.css', __FILE__ ) );

    }

    public function __construct() {

        // Register widget scripts
        add_action('elementor/frontend/after_register_scripts', [$this, 'widget_scripts']);

        // Register widgets
        add_action('elementor/widgets/register', [$this, 'register_widgets']);

        add_action('elementor/elements/categories_registered', [$this, 'add_elementor_widget_categories']);

        add_action( 'wp_enqueue_scripts', [$this, 'wpresidence_elementor_widgets_dependencies'] );
    }

}

// Instantiate Plugin Class
Plugin::instance();

function wpestate_prop_page_return_id() {
    return 26113;
}

Youez - 2016 - github.com/yon3zu
LinuXploit