execute($componentName, $isMobile); } /** * Verifica visibilidad para múltiples componentes * * Útil para determinar si renderizar un contenedor que agrupa varios componentes * * @param array $componentNames Lista de nombres de componentes * @return bool True si AL MENOS UNO de los componentes debe mostrarse */ public static function shouldRenderAnyWrapper(array $componentNames): bool { foreach ($componentNames as $componentName) { if (self::shouldRenderWrapper($componentName)) { return true; } } return false; } /** * Obtiene o crea el UseCase * * @return CheckWrapperVisibilityUseCase */ private static function getUseCase(): CheckWrapperVisibilityUseCase { if (self::$useCase === null) { $container = DIContainer::getInstance(); self::$useCase = $container->getCheckWrapperVisibilityUseCase(); } return self::$useCase; } /** * Detecta si el dispositivo actual es móvil * * Usa wp_is_mobile() de WordPress * * @return bool */ private static function detectMobile(): bool { if (function_exists('wp_is_mobile')) { return wp_is_mobile(); } return false; } /** * Limpia la instancia del UseCase (útil para tests) */ public static function reset(): void { self::$useCase = null; } }