FrankZamora
f4b45b7e17
fix(exclusions): Corregir Renderers que ignoraban sistema de exclusiones
...
Plan 99.11 - Correcciones críticas:
- FooterRenderer: Añadir PageVisibilityHelper::shouldShow()
- HeroSectionRenderer: Añadir PageVisibilityHelper::shouldShow()
- AdsensePlacementRenderer: Añadir PageVisibilityHelper::shouldShow()
Mejoras adicionales:
- UrlPatternExclusion: Soporte wildcards (*sct* → regex)
- ExclusionFormPartial: UI mejorada con placeholders
- ComponentConfiguration: Grupo _exclusions validado
- 12 FormBuilders: Integración UI de exclusiones
- 12 FieldMappers: Mapeo campos de exclusión
Verificado: Footer oculto en post con categoría excluida SCT
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-03 19:52:44 -06:00
FrankZamora
8735962f52
feat(visibility): sistema de visibilidad por tipo de página
...
- Añadir PageVisibility use case y repositorio
- Implementar PageTypeDetector para detectar home/single/page/archive
- Actualizar FieldMappers con soporte show_on_[page_type]
- Extender FormBuilders con UI de visibilidad por página
- Refactorizar Renderers para evaluar visibilidad dinámica
- Limpiar schemas removiendo campos de visibilidad legacy
- Añadir MigrationCommand para migrar configuraciones existentes
- Implementar adsense-loader.js para carga lazy de ads
- Actualizar front-page.php con nueva estructura
- Extender DIContainer con nuevos servicios
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-03 09:16:34 -06:00
FrankZamora
4f25297f14
feat(pagespeed): implementar campo is_critical para CSS crítico dinámico (Phase 4.2)
...
Implementación completa del sistema de Critical CSS dinámico según plan 13.01:
Domain Layer:
- Crear CriticalCSSCollectorInterface para DIP compliance
Infrastructure Layer:
- Implementar CriticalCSSCollector (singleton via DIContainer)
- Crear CriticalCSSHooksRegistrar para inyección en wp_head
- Actualizar DIContainer con getCriticalCSSCollector()
Schemas:
- Agregar campo is_critical a navbar, top-notification-bar, hero
- Sincronizar con BD (18+39+31 campos)
Renderers (navbar, top-notification-bar, hero):
- Inyectar CriticalCSSCollectorInterface via constructor
- Lógica condicional: si is_critical=true → CSS a <head>
Admin (FormBuilders + FieldMappers):
- Toggle "CSS Crítico" en sección visibility
- Mapeo AJAX para persistencia
Beneficios:
- LCP optimizado: CSS crítico inline en <head>
- Above-the-fold rendering sin FOUC
- Componentes configurables desde admin panel
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-29 09:29:45 -06:00
FrankZamora
4f11c2c312
refactor(admin): Migrate AdminAjaxHandler to Clean Architecture
...
- Move AdminAjaxHandler to Admin/Shared/Infrastructure/Api/Wordpress/
- Create FieldMapperInterface for decentralized field mapping
- Create FieldMapperRegistry for module discovery
- Create FieldMapperProvider for auto-registration of 12 mappers
- Add FieldMappers for all components:
- ContactFormFieldMapper (46 fields)
- CtaBoxSidebarFieldMapper (32 fields)
- CtaLetsTalkFieldMapper
- CtaPostFieldMapper
- FeaturedImageFieldMapper (15 fields)
- FooterFieldMapper (31 fields)
- HeroFieldMapper
- NavbarFieldMapper
- RelatedPostFieldMapper (34 fields)
- SocialShareFieldMapper
- TableOfContentsFieldMapper
- TopNotificationBarFieldMapper (17 fields)
- Update functions.php bootstrap with FieldMapperProvider
- AdminAjaxHandler reduced from ~700 to 145 lines
- Follows SRP, OCP, DIP principles
BACKUP BEFORE: Removing CTA A/B Testing legacy system
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-26 20:18:55 -06:00