includes(); $this->init_hooks(); } /** * Include required files */ private function includes() { // Core classes require_once RWPVTO_PLUGIN_DIR . 'includes/class-rwpvto-database.php'; require_once RWPVTO_PLUGIN_DIR . 'includes/class-rwpvto-replicate-api.php'; require_once RWPVTO_PLUGIN_DIR . 'includes/class-rwpvto-ajax-handler.php'; // Admin classes if ( is_admin() ) { require_once RWPVTO_PLUGIN_DIR . 'admin/class-rwpvto-settings.php'; require_once RWPVTO_PLUGIN_DIR . 'admin/class-rwpvto-dashboard.php'; require_once RWPVTO_PLUGIN_DIR . 'admin/class-rwpvto-product-meta.php'; } } /** * Initialize hooks */ private function init_hooks() { // Activation/Deactivation hooks register_activation_hook( RWPVTO_PLUGIN_FILE, array( $this, 'activate' ) ); register_deactivation_hook( RWPVTO_PLUGIN_FILE, array( $this, 'deactivate' ) ); // Initialize plugin after WordPress and WooCommerce load add_action( 'plugins_loaded', array( $this, 'init' ) ); // Declare HPOS compatibility add_action( 'before_woocommerce_init', array( $this, 'declare_hpos_compatibility' ) ); // Load text domain // WordPress.org automatically loads translations, no need to call load_textdomain // Enqueue admin assets add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) ); // Enable WebP support add_filter( 'upload_mimes', array( $this, 'enable_webp_upload' ) ); add_filter( 'file_is_displayable_image', array( $this, 'webp_is_displayable' ), 10, 2 ); } /** * Initialize the plugin */ public function init() { // Check if WooCommerce is active if ( ! $this->is_woocommerce_active() ) { add_action( 'admin_notices', array( $this, 'woocommerce_missing_notice' ) ); return; } // Initialize database RWPVTO_Database::instance(); // Initialize AJAX handler RWPVTO_Ajax_Handler::instance(); // Initialize admin classes if ( is_admin() ) { RWPVTO_Settings::instance(); RWPVTO_Dashboard::instance(); RWPVTO_Product_Meta::instance(); } } /** * Declare HPOS compatibility */ public function declare_hpos_compatibility() { if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RWPVTO_PLUGIN_FILE, true ); } } /** * Check if WooCommerce is active * * @return bool */ private function is_woocommerce_active() { return class_exists( 'WooCommerce' ); } /** * WooCommerce missing notice */ public function woocommerce_missing_notice() { ?>
AI Virtual Try-On for WooCommerce requires WooCommerce to be installed and active. Please install %s first.', 'ai-virtual-try-on-for-woocommerce' ), 'WooCommerce' ) ); ?>