FrankZamora
36d5cf56de
fix(wrappers): eliminar wrappers vacíos y corregir exclusiones AdSense (Plan 99.15)
...
## Problema
- Componentes deshabilitados/excluidos dejaban wrappers HTML vacíos
(navbar 32px, sidebar col-lg-3 294px)
- AdSense ignoraba exclusiones por URL pattern en grupo _exclusions
## Solución Plan 99.15 (Clean Architecture)
### Domain Layer
- WrapperVisibilityCheckerInterface: contrato para verificar visibilidad
### Application Layer
- CheckWrapperVisibilityUseCase: orquesta verificaciones de visibilidad
### Infrastructure Layer
- WordPressComponentVisibilityRepository: consulta BD + PageVisibilityHelper
- WrapperVisibilityService: facade estático para templates
- BodyClassHooksRegistrar: agrega clases CSS failsafe al body
### Templates modificados
- header.php: renderizado condicional de <nav> wrapper
- page.php/single.php: lógica dinámica col-lg-9/col-lg-12 según sidebar
### CSS Failsafe
- css-global-utilities.css: reglas body.roi-hide-* como respaldo
## Fix AdSense (Inc/adsense-placement.php)
- Agregado PageVisibilityHelper::shouldShow() a todas las funciones:
roi_render_ad_slot, roi_render_rail_ads, roi_enqueue_adsense_script,
roi_inject_content_ads, roi_render_anchor_ads, roi_render_vignette_ad,
roi_enqueue_anchor_vignette_scripts
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-04 11:46:21 -06:00
FrankZamora
e3d17db5ea
cleanup: remove after-related debug code
2025-11-27 22:52:25 -06:00
FrankZamora
a281448bf8
debug: add after-related slot debug comments
2025-11-27 22:50:56 -06:00
FrankZamora
8c3fea964d
feat(adsense): agregar slot after-related en single.php
...
- El slot after-related estaba definido en schema pero no se llamaba
- Ahora se renderiza después del componente related-post
- Requiere habilitar 'Después de Related Posts' en panel AdSense
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-27 22:45:40 -06:00
FrankZamora
1a069a1336
fix(adsense): Remove debug code after finding root cause
...
Root cause: mu-plugin allow-unfiltered-html.php was replacing all
filtered content with raw DB content at PHP_INT_MAX priority.
Solution: Modified mu-plugin on server to call roi_inject_content_ads()
after getting raw content.
NOTE: The mu-plugin change is only on the production server at:
/wp-content/mu-plugins/allow-unfiltered-html.php
The change adds roi_inject_content_ads() call after YouTube Facade filter.
This allows ads to be injected into posts even with the raw content bypass.
Cleaned up:
- Removed debug logging from adsense-placement.php
- Removed template-level debug from single.php
- Removed debug markers
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-27 20:19:43 -06:00
FrankZamora
cfcc38c0f7
debug: Add template-level debug to trace content output
2025-11-27 20:12:31 -06:00
FrankZamora
371995d151
fix(accessibility): Add main landmark and fix cta-box-title heading
...
Phase 4.4 Accessibility fixes:
- single.php: Add <main id="main-content" role="main"> landmark
- CtaBoxSidebarRenderer: h5 cta-box-title changed to span
Fixes: "No main landmark" and "Headings skip levels"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-27 17:03:22 -06:00
FrankZamora
0846a3bf03
Migración completa a Clean Architecture con componentes funcionales
...
- Reorganización de estructura: Admin/, Public/, Shared/, Schemas/
- 12 componentes migrados: TopNotificationBar, Navbar, CtaLetsTalk, Hero,
FeaturedImage, TableOfContents, CtaBoxSidebar, SocialShare, CtaPost,
RelatedPost, ContactForm, Footer
- Panel de administración con tabs Bootstrap 5 funcionales
- Schemas JSON para configuración de componentes
- Renderers dinámicos con CSSGeneratorService (cero CSS hardcodeado)
- FormBuilders para UI admin con Design System consistente
- Fix: Bootstrap JS cargado en header para tabs funcionales
- Fix: buildTextInput maneja valores mixed (bool/string)
- Eliminación de estructura legacy (src/, admin/, assets/css/componente-*)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-25 21:20:06 -06:00
FrankZamora
de5fff4f5c
Fase 1: Estructura Base y DI Container - Clean Architecture
...
COMPLETADO: Fase 1 de la migración a Clean Architecture + POO
## Estructura de Carpetas
- ✓ Estructura completa de 4 capas (Domain, Application, Infrastructure, Presentation)
- ✓ Carpetas de Use Cases (SaveComponent, GetComponent, DeleteComponent, SyncSchema)
- ✓ Estructura de tests (Unit, Integration, E2E)
- ✓ Carpetas de schemas y templates
## Composer y Autoloading
- ✓ PSR-4 autoloading configurado para ROITheme namespace
- ✓ Autoloader optimizado regenerado
## DI Container
- ✓ DIContainer implementado con patrón Singleton
- ✓ Métodos set(), get(), has() para gestión de servicios
- ✓ Getters específicos para ComponentRepository, ValidationService, CacheService
- ✓ Placeholders que serán implementados en Fase 5
- ✓ Prevención de clonación y deserialización
## Interfaces
- ✓ ComponentRepositoryInterface (Domain)
- ✓ ValidationServiceInterface (Application)
- ✓ CacheServiceInterface (Application)
- ✓ Component entity placeholder (Domain)
## Bootstrap
- ✓ functions.php actualizado con carga de Composer autoloader
- ✓ Inicialización del DIContainer
- ✓ Helper function roi_container() disponible globalmente
## Tests
- ✓ 10 tests unitarios para DIContainer (100% cobertura)
- ✓ Total: 13 tests unitarios, 28 assertions
- ✓ Suite de tests pasando correctamente
## Validación
- ✓ Script de validación automatizado (48/48 checks pasados)
- ✓ 100% de validaciones exitosas
La arquitectura base está lista para la Fase 2.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-17 13:48:24 -06:00
FrankZamora
bbc6ed2c98
Refactor: Reorganizar repositorio - Solo tema WordPress
...
Se movió el repositorio git desde la raíz de WordPress a la carpeta del tema.
Este commit limpia todos los archivos de WordPress del historial de tracking
y mantiene únicamente los archivos del tema apus-theme.
Cambios:
- Eliminado tracking de archivos de WordPress core
- Mantenido solo archivos del tema (97 archivos)
- Actualizado .gitignore para excluir carpetas de desarrollo
- Historial de commits anteriores se mantiene intacto
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-09 09:15:47 -06:00