__DIR__ . '/includes/lib/RobThree/Auth/', 'BaconQrCode\\' => __DIR__ . '/includes/lib/BaconQrCode/', 'DASPRiD\\Enum\\' => __DIR__ . '/includes/lib/DASPRiD/Enum/', 'GeoIp2\\' => __DIR__ . '/includes/lib/GeoIp2/', 'MaxMind\\Db\\' => __DIR__ . '/includes/lib/MaxMind/Db/', ]; foreach ($prefixes as $prefix => $base_dir) { $len = strlen($prefix); if (strncmp($prefix, $class, $len) !== 0) { continue; } $relative_class = substr($class, $len); $file = rtrim($base_dir, '/') . '/' . str_replace('\\', '/', $relative_class) . '.php'; if (file_exists($file)) { require $file; return; } } }); // Incluir los archivos de las clases principales del plugin. require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-geolocation-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'; // 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' ] ); /** * Función central de inicialización del plugin. * Carga el text domain y arranca la clase principal en el hook correcto. */ function advaipbl_initialize() { load_plugin_textdomain( 'advanced-ip-blocker', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); ADVAIPBL_Main::get_instance(); } add_action( 'after_setup_theme', 'advaipbl_initialize' ); /** * Añade el enlace de "Settings" en la página de listado de plugins. * * @param array $links Los enlaces de acción existentes. * @return array Los enlaces de acción modificados. */ function advaipbl_add_settings_link( $links ) { $settings_link = sprintf( '%s', esc_url( admin_url( 'admin.php?page=advaipbl_settings_page' ) ), esc_html__( 'Settings', 'advanced-ip-blocker' ) ); array_unshift( $links, $settings_link ); return $links; } add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'advaipbl_add_settings_link' ); /** * Registra los comandos de WP-CLI solo cuando sea necesario. */ function advaipbl_register_cli_commands() { if ( defined( 'WP_CLI' ) && WP_CLI ) { // La librería de 2FA y su manager requieren PHP 8.1+. // Solo los cargamos si la versión de PHP del entorno CLI es compatible. if ( version_compare( PHP_VERSION, '8.1', '>=' ) ) { require_once plugin_dir_path( __FILE__ ) . 'includes/lib/RobThree/Auth/TwoFactorAuth.php'; require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-2fa-manager.php'; } require_once plugin_dir_path( __FILE__ ) . 'includes/class-advaipbl-cli.php'; WP_CLI::add_command( 'advaipbl', 'ADVAIPBL_CLI' ); } } add_action( 'plugins_loaded', 'advaipbl_register_cli_commands', 20 );