load_dependencies(); $this->define_admin_hooks(); // Initialize sub-classes on plugins_loaded to ensure WP is ready add_action( 'plugins_loaded', array( $this, 'init' ) ); // Activation/Deactivation register_activation_hook( __FILE__, array( $this, 'activate' ) ); register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) ); // Assets add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_frontend_assets' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) ); // WooCommerce compatibility add_action( 'before_woocommerce_init', array( $this, 'declare_woocommerce_compatibility' ) ); } /** * Define admin specific hooks */ private function define_admin_hooks() { // Add Settings Link add_filter( 'plugin_action_links_' . AICA_PLUGIN_BASENAME, array( $this, 'add_action_links' ) ); } /** * Add settings link to plugin list * * @param array $links Existing links * @return array Modified links */ public function add_action_links( $links ) { $settings_link = '' . __( 'Settings', 'aica-smart-ai-commerce-assistant' ) . ''; array_unshift( $links, $settings_link ); return $links; } /** * Load plugin dependencies. * * @return void */ private function load_dependencies() { // Core classes require_once AICA_PLUGIN_DIR . 'includes/class-installer.php'; require_once AICA_PLUGIN_DIR . 'includes/class-product-indexer.php'; require_once AICA_PLUGIN_DIR . 'includes/class-ai-engine.php'; require_once AICA_PLUGIN_DIR . 'includes/class-cart-manager.php'; require_once AICA_PLUGIN_DIR . 'includes/class-analytics.php'; require_once AICA_PLUGIN_DIR . 'includes/class-conversion-tracking.php'; require_once AICA_PLUGIN_DIR . 'includes/class-onboarding.php'; require_once AICA_PLUGIN_DIR . 'includes/class-system-prompts.php'; require_once AICA_PLUGIN_DIR . 'includes/class-order-tracking.php'; // NEW // API endpoints require_once AICA_PLUGIN_DIR . 'api/class-rest-api.php'; // Admin classes if ( is_admin() ) { require_once AICA_PLUGIN_DIR . 'admin/class-admin-settings.php'; require_once AICA_PLUGIN_DIR . 'admin/class-admin-menu.php'; require_once AICA_PLUGIN_DIR . 'admin/class-magic-prompts.php'; require_once AICA_PLUGIN_DIR . 'admin/class-system-health.php'; } } /** * Initialize plugin after WordPress loads. * * @return void */ public function init() { if ( ! $this->is_woocommerce_active() ) { add_action( 'admin_notices', array( $this, 'woocommerce_missing_notice' ) ); return; } // Initialize instances AICA_REST_API::get_instance(); AICA_Product_Indexer::get_instance(); AICA_Cart_Manager::get_instance(); AICA_Analytics::get_instance(); AICA_Conversion_Tracking::get_instance(); AICA_System_Prompts::get_instance(); AICA_Order_Tracking::get_instance(); // NEW if ( is_admin() ) { AICA_Onboarding::get_instance(); AICA_Admin_Menu::get_instance(); AICA_Admin_Settings::get_instance(); AICA_Magic_Prompts::get_instance(); AICA_System_Health::get_instance(); } } /** * Check if WooCommerce is active. * * @return bool True if WooCommerce is active, false otherwise. */ private function is_woocommerce_active() { return class_exists( 'WooCommerce' ); } /** * Declare WooCommerce HPOS and blocks compatibility. * * @return void */ public function declare_woocommerce_compatibility() { if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', __FILE__, true ); } } /** * Display admin notice when WooCommerce is not active. * * @return void */ public function woocommerce_missing_notice() { ?>
WooCommerce' ); ?>