load_dependencies(); $this->init_components(); $this->register_hooks(); } /** * Load required files */ private function load_dependencies() { require_once plugin_dir_path( __FILE__ ) . 'class-settings-pages.php'; require_once plugin_dir_path( __FILE__ ) . 'class-setup-wizard.php'; } /** * Initialize components */ private function init_components() { $this->settings_pages = new AI_Search_Settings_Pages(); $this->setup_wizard = new AI_Search_Setup_Wizard(); } /** * Register admin hooks */ private function register_hooks() { add_action( 'admin_menu', [ $this, 'register_settings_menu' ] ); add_action( 'admin_notices', [ $this->setup_wizard, 'show_setup_notice' ] ); add_action( 'admin_enqueue_scripts', [ $this->setup_wizard, 'enqueue_scripts' ] ); // Admin post actions add_action( 'admin_post_ai_search_generate_embeddings', [ $this->settings_pages, 'generate_selected_embeddings' ] ); add_action( 'admin_post_ai_search_clear_cache', [ $this->settings_pages, 'clear_embeddings_cache' ] ); add_action( 'admin_post_ai_search_validate_token', [ $this->settings_pages, 'validate_service_token' ] ); add_action( 'admin_post_ai_search_save_custom_fields', [ $this->settings_pages, 'save_custom_fields_settings' ] ); add_action( 'admin_post_ai_search_save_woocommerce_fields', [ $this->settings_pages, 'save_woocommerce_fields_settings' ] ); add_action( 'admin_post_ai_search_complete_setup', [ $this->setup_wizard, 'complete_setup' ] ); // AJAX actions add_action( 'wp_ajax_ai_search_validate_token', [ $this->settings_pages, 'validate_service_token' ] ); } /** * Register settings menu in admin */ public function register_settings_menu() { add_options_page( 'AI Search Settings', 'AI Search', 'manage_options', 'ai-search', [ $this->settings_pages, 'display_settings_page' ] ); } /** * Get settings pages instance */ public function get_settings_pages() { return $this->settings_pages; } /** * Get setup wizard instance */ public function get_setup_wizard() { return $this->setup_wizard; } }