... * * 2. wp_head (priority 1) → CriticalCSSService::render() * - Consulta BD por componentes is_critical=true * - Genera CSS usando Renderers * - Output: * * 3. Bootstrap completo se carga diferido (media="print" + onload) * - No bloquea renderizado inicial * * PATRÓN: * - SRP: Solo registra hooks, delega lógica a servicios * * UBICACIÓN: Infrastructure/Wordpress * * @package ROITheme\Shared\Infrastructure\Wordpress */ final class CriticalCSSHooksRegistrar { public function __construct( private readonly CriticalCSSService $criticalCSSService, private readonly CriticalBootstrapService $criticalBootstrapService ) {} /** * Registrar hooks de WordPress */ public function register(): void { // Priority 0 = Critical Bootstrap (primero, antes de componentes) add_action('wp_head', [$this, 'renderCriticalBootstrap'], 0); // Priority 1 = Critical Component CSS (después de Bootstrap) add_action('wp_head', [$this, 'renderCriticalCSS'], 1); } /** * Callback para wp_head - Critical Bootstrap * * Inyecta subset de Bootstrap (~8KB) inline: * - Container, flexbox, navbar, dropdown * - Output: */ public function renderCriticalBootstrap(): void { $this->criticalBootstrapService->render(); } /** * Callback para wp_head - Critical Component CSS * * Ejecuta CriticalCSSService que: * - Consulta BD por componentes con is_critical=true * - Genera CSS usando los Renderers * - Output: */ public function renderCriticalCSS(): void { $this->criticalCSSService->render(); } }