__DIR__ . '/includes/lib/RobThree/Auth/', 'BaconQrCode\\' => __DIR__ . '/includes/lib/BaconQrCode/', 'DASPRiD\\Enum\\' => __DIR__ . '/includes/lib/DASPRiD/Enum/', ]; foreach ($prefixes as $prefix => $base_dir) { $len = strlen($prefix); if (strncmp($prefix, $class, $len) !== 0) { continue; } // El nombre de la clase ya incluye el último subdirectorio. $relative_class = substr($class, $len); $file = rtrim($base_dir, '/') . '/' . str_replace('\\', '/', $relative_class) . '.php'; if (file_exists($file)) { require $file; return; } } }); // 1. Incluir los archivos de las clases principales. require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-api-manager.php'; require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-session-manager.php'; require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-main.php'; // 2. Registrar los hooks de activación y desactivación del plugin. register_activation_hook( __FILE__, [ 'ADVAIPBL_Main', 'activate_plugin' ] ); register_deactivation_hook( __FILE__, [ 'ADVAIPBL_Main', 'deactivate_plugin' ] ); // 3. Función principal que arranca el plugin. function advaipbl_run_plugin() { ADVAIPBL_Main::get_instance(); } add_action( 'plugins_loaded', 'advaipbl_run_plugin' ); // 4. Añade el enlace de "Settings" en la página de listado de plugins. function advaipbl_add_settings_link( $links ) { $settings_link = '' . __( 'Settings', 'advanced-ip-blocker' ) . ''; array_unshift( $links, $settings_link ); return $links; } add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'advaipbl_add_settings_link' ); // 5. Registra los comandos de WP-CLI solo cuando sea necesario. function advaipbl_register_cli_commands() { if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-cli.php'; WP_CLI::add_command( 'advaipbl', 'ADVAIPBL_CLI' ); } } add_action( 'cli_init', 'advaipbl_register_cli_commands' );