'roi-hide-navbar', 'table-of-contents' => 'roi-hide-toc', 'cta-box-sidebar' => 'roi-hide-cta-sidebar', 'sidebar' => 'roi-hide-sidebar', ]; /** * Componentes de sidebar que determinan si mostrar columna lateral */ private const SIDEBAR_COMPONENTS = [ 'table-of-contents', 'cta-box-sidebar', ]; /** * Registrar hooks de WordPress */ public function register(): void { add_filter('body_class', [$this, 'addHiddenComponentClasses']); } /** * Callback para body_class - agrega clases para componentes ocultos * * @param array $classes Clases existentes * @return array Clases modificadas */ public function addHiddenComponentClasses(array $classes): array { // Agregar clase por cada componente oculto foreach (self::LAYOUT_COMPONENTS as $componentName => $cssClass) { if (!WrapperVisibilityService::shouldRenderWrapper($componentName)) { $classes[] = $cssClass; } } // Verificar si TODOS los componentes de sidebar están ocultos if ($this->allSidebarComponentsHidden()) { $classes[] = 'roi-sidebar-empty'; } return $classes; } /** * Verifica si todos los componentes de sidebar están ocultos * * @return bool True si ningún componente de sidebar debe mostrarse */ private function allSidebarComponentsHidden(): bool { foreach (self::SIDEBAR_COMPONENTS as $componentName) { if (WrapperVisibilityService::shouldRenderWrapper($componentName)) { return false; } } return true; } }