render(); exit; } // Try early metrics handling before full plugin initialization. wp_prometheus_early_metrics_check(); /** * Plugin version. * * @var string */ define( 'WP_PROMETHEUS_VERSION', '0.4.2' ); /** * Plugin file path. * * @var string */ define( 'WP_PROMETHEUS_FILE', __FILE__ ); /** * Plugin directory path. * * @var string */ define( 'WP_PROMETHEUS_PATH', plugin_dir_path( __FILE__ ) ); /** * Plugin directory URL. * * @var string */ define( 'WP_PROMETHEUS_URL', plugin_dir_url( __FILE__ ) ); /** * Plugin basename. * * @var string */ define( 'WP_PROMETHEUS_BASENAME', plugin_basename( __FILE__ ) ); /** * Minimum WordPress version required. * * @var string */ define( 'WP_PROMETHEUS_MIN_WP_VERSION', '6.4' ); /** * Minimum PHP version required. * * @var string */ define( 'WP_PROMETHEUS_MIN_PHP_VERSION', '8.3' ); /** * Check requirements and bootstrap the plugin. * * @return void */ function wp_prometheus_init(): void { // Check PHP version. if ( version_compare( PHP_VERSION, WP_PROMETHEUS_MIN_PHP_VERSION, '<' ) ) { add_action( 'admin_notices', 'wp_prometheus_php_version_notice' ); return; } // Check WordPress version. if ( version_compare( get_bloginfo( 'version' ), WP_PROMETHEUS_MIN_WP_VERSION, '<' ) ) { add_action( 'admin_notices', 'wp_prometheus_wp_version_notice' ); return; } // Check if Composer autoloader exists. $autoloader = WP_PROMETHEUS_PATH . 'vendor/autoload.php'; if ( ! file_exists( $autoloader ) ) { add_action( 'admin_notices', 'wp_prometheus_autoloader_notice' ); return; } require_once $autoloader; // Initialize the plugin. \Magdev\WpPrometheus\Plugin::get_instance(); } /** * Display PHP version notice. * * @return void */ function wp_prometheus_php_version_notice(): void { $message = sprintf( /* translators: 1: Required PHP version, 2: Current PHP version */ __( 'WP Prometheus requires PHP version %1$s or higher. You are running PHP %2$s.', 'wp-prometheus' ), WP_PROMETHEUS_MIN_PHP_VERSION, PHP_VERSION ); printf( '

%s

', esc_html( $message ) ); } /** * Display WordPress version notice. * * @return void */ function wp_prometheus_wp_version_notice(): void { $message = sprintf( /* translators: 1: Required WordPress version, 2: Current WordPress version */ __( 'WP Prometheus requires WordPress version %1$s or higher. You are running WordPress %2$s.', 'wp-prometheus' ), WP_PROMETHEUS_MIN_WP_VERSION, get_bloginfo( 'version' ) ); printf( '

%s

', esc_html( $message ) ); } /** * Display autoloader notice. * * @return void */ function wp_prometheus_autoloader_notice(): void { $message = __( 'WP Prometheus requires Composer dependencies to be installed. Please run "composer install" in the plugin directory.', 'wp-prometheus' ); printf( '

%s

', esc_html( $message ) ); } /** * Plugin activation hook. * * @return void */ function wp_prometheus_activate(): void { // Check requirements before activation. if ( version_compare( PHP_VERSION, WP_PROMETHEUS_MIN_PHP_VERSION, '<' ) ) { deactivate_plugins( WP_PROMETHEUS_BASENAME ); wp_die( sprintf( /* translators: %s: Required PHP version */ esc_html__( 'WP Prometheus requires PHP version %s or higher.', 'wp-prometheus' ), WP_PROMETHEUS_MIN_PHP_VERSION ) ); } $autoloader = WP_PROMETHEUS_PATH . 'vendor/autoload.php'; if ( file_exists( $autoloader ) ) { require_once $autoloader; \Magdev\WpPrometheus\Installer::activate(); } } /** * Plugin deactivation hook. * * @return void */ function wp_prometheus_deactivate(): void { $autoloader = WP_PROMETHEUS_PATH . 'vendor/autoload.php'; if ( file_exists( $autoloader ) ) { require_once $autoloader; \Magdev\WpPrometheus\Installer::deactivate(); } } /** * Plugin uninstall hook. * * @return void */ function wp_prometheus_uninstall(): void { $autoloader = WP_PROMETHEUS_PATH . 'vendor/autoload.php'; if ( file_exists( $autoloader ) ) { require_once $autoloader; \Magdev\WpPrometheus\Installer::uninstall(); } } // Register activation/deactivation hooks. register_activation_hook( __FILE__, 'wp_prometheus_activate' ); register_deactivation_hook( __FILE__, 'wp_prometheus_deactivate' ); // Initialize plugin after all plugins are loaded. add_action( 'plugins_loaded', 'wp_prometheus_init' );