%s
', wp_kses_post( sprintf( /* translators: %s: WooCommerce install URL */ __('AI Store Signals for WooCommerce requires WooCommerce to be installed and active.', 'ai-store-signals-for-woocommerce'), esc_url($install_url) ) ) ); } /** * Bootstrap all plugin modules. * Runs on `plugins_loaded` to ensure WooCommerce is already loaded. */ function aisig_init() { if (! aisig_woocommerce_active()) { add_action('admin_notices', 'aisig_notice_missing_woocommerce'); return; } // Load translations. load_plugin_textdomain( 'ai-store-signals-for-woocommerce', false, dirname(AISIG_BASENAME) . '/languages' ); // Core dependency: database abstraction layer. require_once AISIG_PATH . 'includes/db/class-aisig-db.php'; // Core feature modules. require_once AISIG_PATH . 'includes/core/class-aisig-score-calc.php'; require_once AISIG_PATH . 'includes/core/class-aisig-scanner.php'; require_once AISIG_PATH . 'includes/core/class-aisig-tracker.php'; require_once AISIG_PATH . 'includes/core/class-aisig-llmstxt.php'; require_once AISIG_PATH . 'includes/core/class-aisig-feed.php'; require_once AISIG_PATH . 'includes/core/class-aisig-feed-drift.php'; require_once AISIG_PATH . 'includes/core/class-aisig-schema.php'; require_once AISIG_PATH . 'includes/core/class-aisig-bot-access-checker.php'; require_once AISIG_PATH . 'includes/core/class-aisig-fulfillment.php'; require_once AISIG_PATH . 'includes/core/class-aisig-cron.php'; // Admin-only modules. if (is_admin()) { require_once AISIG_PATH . 'admin/class-aisig-admin.php'; new AISIG_Admin(); require_once AISIG_PATH . 'admin/class-aisig-product-meta-box.php'; AISIG_Product_Meta_Box::init(); } // Public (frontend) hooks. require_once AISIG_PATH . 'public/class-aisig-public.php'; // Boot each module. AISIG_Tracker::init(); AISIG_Scanner::init(); AISIG_LLMsTxt::init(); AISIG_Feed::init(); AISIG_Schema::init(); AISIG_Cron::init(); AISIG_Public::init(); } add_action('plugins_loaded', 'aisig_init'); /** * Plugin activation. */ function aisig_activate() { require_once plugin_dir_path(__FILE__) . 'includes/db/class-aisig-db.php'; require_once plugin_dir_path(__FILE__) . 'includes/class-aisig-activator.php'; AISIG_Activator::activate(); } register_activation_hook(__FILE__, 'aisig_activate'); /** * Plugin deactivation. */ function aisig_deactivate() { require_once plugin_dir_path(__FILE__) . 'includes/class-aisig-deactivator.php'; AISIG_Deactivator::deactivate(); } register_deactivation_hook(__FILE__, 'aisig_deactivate'); /** * Declare High Performance Order Storage (HPOS) compatibility. */ add_action( 'before_woocommerce_init', function () { if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } } );