init(); } /** * Initialize plugin */ private function init() { // Load core files $this->load_dependencies(); // Initialize hooks add_action('plugins_loaded', array($this, 'load_plugin_textdomain')); add_action('init', array($this, 'init_plugin')); // Activation/Deactivation hooks register_activation_hook(__FILE__, array($this, 'activate')); register_deactivation_hook(__FILE__, array($this, 'deactivate')); } /** * Load plugin dependencies */ private function load_dependencies() { // Core classes require_once IGNY8_BRIDGE_PLUGIN_DIR . 'includes/functions.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'includes/class-igny8-api.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'includes/class-igny8-site.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'includes/class-igny8-rest-api.php'; // Webhooks removed - using API key authentication only // Webhook logs (used in admin and frontend) require_once IGNY8_BRIDGE_PLUGIN_DIR . 'includes/class-igny8-webhook-logs.php'; // Admin classes (only in admin) if (is_admin()) { require_once IGNY8_BRIDGE_PLUGIN_DIR . 'admin/class-admin.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'admin/class-admin-columns.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'admin/class-post-meta-boxes.php'; } // Sync handlers require_once IGNY8_BRIDGE_PLUGIN_DIR . 'sync/hooks.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'sync/post-sync.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'sync/taxonomy-sync.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'sync/igny8-to-wp.php'; // Data collection require_once IGNY8_BRIDGE_PLUGIN_DIR . 'data/site-collection.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'data/semantic-mapping.php'; require_once IGNY8_BRIDGE_PLUGIN_DIR . 'data/link-graph.php'; } /** * Load plugin textdomain */ public function load_plugin_textdomain() { load_plugin_textdomain( 'igny8-bridge', false, dirname(IGNY8_BRIDGE_PLUGIN_BASENAME) . '/languages' ); } /** * Initialize plugin functionality */ public function init_plugin() { // Register post meta fields igny8_register_post_meta(); // Register taxonomies igny8_register_taxonomies(); // Initialize admin (if in admin) if (is_admin()) { Igny8Admin::get_instance(); } // Initialize sync handlers if (class_exists('Igny8WordPressSync')) { new Igny8WordPressSync(); } } /** * Plugin activation */ public function activate() { // Register post meta and taxonomies igny8_register_post_meta(); igny8_register_taxonomies(); // Flush rewrite rules flush_rewrite_rules(); // Set default options if (!get_option('igny8_bridge_version')) { add_option('igny8_bridge_version', IGNY8_BRIDGE_VERSION); } // Schedule cron jobs igny8_schedule_cron_jobs(); } /** * Plugin deactivation */ public function deactivate() { // Unschedule cron jobs igny8_unschedule_cron_jobs(); // Flush rewrite rules flush_rewrite_rules(); } } /** * Initialize plugin */ function igny8_bridge_init() { return Igny8Bridge::get_instance(); } // Start the plugin igny8_bridge_init();