Files
roi-theme/Admin/Shared/Infrastructure/FieldMapping/FieldMapperProvider.php
FrankZamora f52a395e0d feat(admin): Add theme-settings component for global configurations
- Add Schemas/theme-settings.json with analytics and custom_code groups
- Add ThemeSettingsFormBuilder for Admin Panel UI
- Add ThemeSettingsFieldMapper for AJAX field mapping
- Add ThemeSettingsRenderer for injecting GA/CSS/JS
- Add ThemeSettingsInjector for wp_head/wp_footer hooks
- Register component in AdminDashboardRenderer::getComponents()
- Register FieldMapper in FieldMapperProvider

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 21:58:14 -06:00

70 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace ROITheme\Admin\Shared\Infrastructure\FieldMapping;
use ROITheme\Admin\Shared\Domain\Contracts\FieldMapperInterface;
/**
* Provider para auto-registro de Field Mappers
*
* RESPONSABILIDAD:
* - Descubrir automaticamente FieldMappers en cada modulo
* - Registrarlos en el FieldMapperRegistry
*
* BENEFICIO:
* - Agregar nuevo componente = crear FieldMapper (sin tocar functions.php)
* - Eliminar componente = borrar carpeta (limpieza automatica)
*/
final class FieldMapperProvider
{
private const MODULES = [
'TopNotificationBar',
'Navbar',
'CtaLetsTalk',
'Hero',
'FeaturedImage',
'TableOfContents',
'CtaBoxSidebar',
'SocialShare',
'CtaPost',
'RelatedPost',
'ContactForm',
'Footer',
'ThemeSettings',
];
public function __construct(
private readonly FieldMapperRegistry $registry
) {}
/**
* Registra todos los FieldMappers disponibles
*/
public function registerAll(): void
{
foreach (self::MODULES as $module) {
$this->registerIfExists($module);
}
}
/**
* Registra un mapper si existe la clase
*/
private function registerIfExists(string $module): void
{
$className = sprintf(
'ROITheme\\Admin\\%s\\Infrastructure\\FieldMapping\\%sFieldMapper',
$module,
$module
);
if (class_exists($className)) {
$mapper = new $className();
if ($mapper instanceof FieldMapperInterface) {
$this->registry->register($mapper);
}
}
}
}