load_dependencies(); // Check required plugins add_action('admin_init', array($this, 'check_required_plugins')); // Add admin menu items add_action('admin_menu', array($this, 'add_admin_menu'), 99); // Register admin assets add_action('admin_enqueue_scripts', array($this, 'register_admin_assets')); // Initialize components $this->init_components(); // Declare WooCommerce HPOS compatibility add_action('before_woocommerce_init', array($this, 'declare_hpos_compatibility')); } /** * Declare compatibility with WooCommerce HPOS (High-Performance Order Storage) */ public function declare_hpos_compatibility() { if (class_exists('Automattic\WooCommerce\Utilities\FeaturesUtil')) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } } /** * Load required dependencies */ private function load_dependencies() { require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-db.php'; require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-export.php'; require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-import.php'; require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-manipulator.php'; } /** * Initialize components */ private function init_components() { $this->db = new Studiou_WC_Product_Cat_Manage_DB(); $this->exporter = new Studiou_WC_Product_Cat_Manage_Export($this->db); $this->importer = new Studiou_WC_Product_Cat_Manage_Import($this->db); $this->manipulator = new Studiou_WC_Product_Cat_Manage_Manipulator($this->db); } /** * Check if required plugins are active */ public function check_required_plugins() { if (!is_admin() || isset($_GET['activate-multi'])) { return; } // Check for WooCommerce if (!class_exists('WooCommerce') || !defined('WC_VERSION') || version_compare(WC_VERSION, '9.8', '<')) { add_action('admin_notices', array($this, 'woocommerce_missing_notice')); deactivate_plugins(STUDIOU_WCPCM_PLUGIN_BASENAME); if (isset($_GET['activate'])) { unset($_GET['activate']); } } } /** * WooCommerce missing notice */ public function woocommerce_missing_notice() { ?>
', '' ); ?>