feat(critical-css): implementar TIPO 4 y TIPO 5 - CSS Below-the-fold y Lazy Loading
## TIPO 4: CSS Below-the-fold (Critical Variables + Responsive) - Inyecta variables CSS críticas inline en wp_head P:-1 - Inyecta media queries críticas inline en wp_head P:2 (corregido de P:1) - Auto-regeneración cuando archivos fuente cambian (filemtime check) - Cache en Assets/CriticalCSS/ para evitar lecturas repetidas - Comando WP-CLI: wp roi-theme generate-critical-css Archivos TIPO 4: - Public/CriticalCSS/Domain/Contracts/ - Interfaces (DIP) - Public/CriticalCSS/Application/UseCases/GetCriticalCSSUseCase.php - Public/CriticalCSS/Infrastructure/Cache/CriticalCSSFileCache.php - Public/CriticalCSS/Infrastructure/Services/CriticalCSSExtractor.php - Public/CriticalCSS/Infrastructure/Services/CriticalCSSInjector.php - bin/generate-critical-css.php ## TIPO 5: CSS No Crítico (Lazy Loading) - Animaciones CSS: carga 2s después de page load via requestIdleCallback - Print CSS: carga solo al imprimir via beforeprint event - Fallback <noscript> para usuarios sin JavaScript - Safari fallback: setTimeout cuando requestIdleCallback no disponible Archivos TIPO 5: - Assets/Js/lazy-css-loader.js - Public/LazyCSSLoader/Infrastructure/Contracts/LazyCSSRegistrarInterface.php - Public/LazyCSSLoader/Infrastructure/Services/LazyCSSRegistrar.php ## Fix: Colisión de prioridades wp_head Antes: TIPO 1 (P:1), TIPO 4 responsive (P:1), TIPO 3 (P:2) - CONFLICTO Después: TIPO 1 (P:1), TIPO 4 responsive (P:2), TIPO 3 (P:3) - OK Nuevo orden de prioridades: P:-1 roi-critical-variables (TIPO 4) P:0 roi-critical-bootstrap (TIPO 2) P:1 roi-critical-css (TIPO 1) P:2 roi-critical-responsive (TIPO 4) P:3 roi-custom-critical-css (TIPO 3) P:5 roi-theme-layout-css (ThemeSettings) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -338,6 +338,64 @@ if (defined('WP_DEBUG') && WP_DEBUG) {
|
||||
error_log('ROI Theme: Bootstrap completed successfully');
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// 5.4. CRITICAL CSS TIPO 4 (CSS Below-the-fold)
|
||||
// =============================================================================
|
||||
|
||||
/**
|
||||
* Bootstrap CriticalCSS TIPO 4
|
||||
*
|
||||
* Inyecta CSS critico (variables, responsive) inline en wp_head
|
||||
* antes de cualquier otro CSS para evitar FOUC.
|
||||
*
|
||||
* Incluye auto-regeneracion: si los archivos fuente cambian,
|
||||
* el cache se regenera automaticamente sin intervencion manual.
|
||||
* Costo: ~0.1ms (2 llamadas a filemtime())
|
||||
*/
|
||||
if (!is_admin()) {
|
||||
$criticalCSSCache = new \ROITheme\Public\CriticalCSS\Infrastructure\Cache\CriticalCSSFileCache();
|
||||
$criticalCSSExtractor = new \ROITheme\Public\CriticalCSS\Infrastructure\Services\CriticalCSSExtractor(
|
||||
$criticalCSSCache
|
||||
);
|
||||
|
||||
// Auto-regenerar si archivos fuente cambiaron
|
||||
if ($criticalCSSExtractor->needsRegeneration()) {
|
||||
$criticalCSSExtractor->generateAll();
|
||||
}
|
||||
|
||||
$criticalCSSInjector = new \ROITheme\Public\CriticalCSS\Infrastructure\Services\CriticalCSSInjector(
|
||||
$criticalCSSCache
|
||||
);
|
||||
$criticalCSSInjector->register();
|
||||
}
|
||||
|
||||
// Registrar comando WP-CLI (util para forzar regeneracion o limpiar cache)
|
||||
if (defined('WP_CLI') && WP_CLI) {
|
||||
require_once get_template_directory() . '/bin/generate-critical-css.php';
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// 5.5. LAZY CSS LOADER TIPO 5 (CSS No Critico)
|
||||
// =============================================================================
|
||||
|
||||
/**
|
||||
* Bootstrap LazyCSSLoader TIPO 5
|
||||
*
|
||||
* Carga CSS no critico de forma lazy:
|
||||
* - Animaciones: requestIdleCallback o timeout 2s
|
||||
* - Print: solo cuando usuario va a imprimir (beforeprint event)
|
||||
*
|
||||
* @since 1.0.20
|
||||
*/
|
||||
if (!is_admin()) {
|
||||
$lazyCSSRegistrar = new \ROITheme\Public\LazyCSSLoader\Infrastructure\Services\LazyCSSRegistrar();
|
||||
$lazyCSSRegistrar->register();
|
||||
|
||||
if (defined('WP_DEBUG') && WP_DEBUG) {
|
||||
error_log('ROI Theme: TIPO 5 LazyCSSLoader registered');
|
||||
}
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// 6. INSTALACIÓN DE TABLAS DEL TEMA
|
||||
// =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user