# Contexto del Proyecto: CNT Sindikatua

## ¿Qué es?
Tema de WordPress para el sitio web del sindicato **CNT** (Confederación Nacional del Trabajo) del País Vasco. Basado en el **Timber Starter Theme** con **Twig** como motor de plantillas.

## Stack Tecnológico

| Componente | Tecnología |
|---|---|
| **CMS** | WordPress |
| **Tema base** | Timber Starter Theme (v2) |
| **Motor de plantillas** | Twig (PHP) |
| **Frontend** | Bootstrap 5.3, Bootstrap Icons |
| **Fuente** | Yaro (custom) |
| **PHP** | Composer, PSR-4 autoloading |
| **Post Types** | `post` (noticias, campaña, conflictos laborales), `opinion`, `videos`, `documento` |
| **Plugins clave** | Polylang (multilenguaje ES/EU), ACF (Advanced Custom Fields), Contact Form 7, Routes |

## Idiomas
Soporte **bilingüe**: Español (`/es`) y Euskera (`/eu`) mediante **Polylang**.

## Estructura del tema

```
cnt-sindikatua/
├── assets/              # CSS, JS, fuentes, imágenes
│   ├── fonts/yaro-font-family/
│   ├── scripts/site.js
│   └── styles/
├── src/                 # Clases PHP (autoload PSR-4)
│   ├── StarterSite.php  -> Clase principal del tema
│   ├── Comments.php     -> Desactiva comentarios globalmente
│   └── SMTP.php         -> Configuración de correo SMTP
├── views/               # Plantillas Twig
│   ├── layouts/base.twig        -> Layout base (HTML, header, footer)
│   ├── partials/                -> Componentes reutilizables
│   └── templates/               -> Plantillas por página/taxonomía
├── functions.php        -> Punto de entrada, inicializa todo
├── style.css            -> Estilos + metadatos del tema
└── template-portada.php -> Template especial para portada
```

## Funcionalidades principales

### 1. Portada dinámica
`template-portada.php` con contexto que incluye:
- Últimas noticias (`getLastsPostsNews`)
- Último artículo de opinión (`getLastPostOpinion`)
- Último post de campaña (`getLastPostCampana`)
- Último post de conflictos laborales (`getLastPostConflicts`)
- Botones de enlaces con imagen (`getBotonesEnlaces`)
- Slider de videos (`getVideosSlider`)

### 2. Archivos personalizados con rutas (Routes)
Rutas definidas en `functions.php` con `upstatement/routes`:

| Ruta ES | Ruta EU | Archivo PHP |
|---|---|---|
| `/es/noticias` | `/eu/berriak` | `archive-noticias.php` |
| `/es/noticias/conflictos-laborales` | `/eu/berriak/lan-gatazkak` | `archive-conflictos-laborales.php` |
| `/es/documentos` | `/eu/dokumentuak` | `archive-documentos.php` |

Todas con soporte de paginación (`/page/:paged`).

### 3. Páginas especiales
Cada una con su template Twig correspondiente:
- Acerca de CNT / CNT-ri buruz
- Afiliación / Afiliazioa
- Contactos / Kontaktua (con formulario CF7)
- Servicios / Zerbitzuak
- Industria
- Enlaces / Loturak
- Noticias / Berriak
- Opinión / Iritzia
- Videos / Bideoak
- Documentos / Dokumentuak
- Aviso Legal, Política de Privacidad, Política de Cookies

### 4. Videos
- Custom post type `videos`
- Reproductor modal con iframe (YouTube/Vimeo)
- Slider en portada
- Embed generado automáticamente con `generar_embed_universal()`
- Script en `site.js` maneja apertura/cierre del modal (autoplay al abrir, stop al cerrar)

### 5. Opinión
- Custom post type `opinion`
- Archive propio con paginación
- Sección destacada en portada

### 6. SMTP
- Clase `SMTP.php` que configura `phpmailer_init`
- Configuración desde opciones de ACF (host, puerto, seguridad, credenciales, remitente)
- Almacenado como opciones de WordPress (`options_smtp_*`)

### 7. Comentarios
- Totalmente desactivados en todo el sitio mediante `Comments.php`
- Oculta menú de comentarios en admin, redirige acceso directo, elimina soporte en post types

### 8. Redes sociales
- Configurables desde ACF (opciones del tema)
- Hasta 4 iconos con imagen y URL
- Estilo SVG blanco en footer con efecto hover

### 9. Búsqueda
- Excluye páginas marcadas con ACF `exclude_from_search`
- Filtro en `pre_get_posts`

### 10. Header y Footer
- **Header**: Top bar (idiomas), logos configurables (ACF), menú principal con dropdown, menú hamburguesa (offcanvas)
- **Footer**: Logos, textos configurables, últimas noticias, último artículo de opinión, redes sociales, enlaces, listado de sedes

### 11. Paginación
- Estilos personalizados con las clases CSS del tema
- Varios partials: `pagination.twig`, `pagination-custom.twig`, `pagination-custom-pages.twig`

## Identidad visual
- **Color principal**: Rojo CNT (`--rojo-cnt: #dc2d30`)
- **Colores secundarios**: `--rojo-cnt-dark: #9d1b1d`, `--rojo-cnt-light: #d6453f`
- **Tipografía titular**: Yaro (YaroSt-Black) para headings y títulos especiales
- **Soporte SVG** en subidas de medios mediante filtro `upload_mimes`

## Scripts JS
- `site.js`: Maneja el modal de videos (autoplay al abrir, stop al cerrar)
- Bootstrap JS: Menús, offcanvas, modals
- Dependencias cargadas desde `vendor/` via Composer

## Migración
- Proyecto migrado desde **Joomla** a WordPress
- `MIGRATION.md` contiene instrucciones para limpieza de BBDD (tablas con prefijos legacy: `d8yd3_`, `bak_`, `gdkw3_`, `qwe9g_`)
- Categorías limpiadas durante migración: Blog, News, Review, tutorial, updates, Joomla!, Uncategorised, Helbideak, Service
- Categorías mantenidas: Berriak/noticias, Albisteak/noticias, Lan gatazkak/conflictos laborales, Industria, Acerca de CNT

## Notas de desarrollo
- Versión de assets cacheada con `time()` para evitar caché del navegador en desarrollo
- Antiguo intento de reescritura de reglas para search pagination comentado en `StarterSite.php`
- Función `pll_current_language()` para integración ACF + Polylang
- Hook en CF7 para añadir título de página como campo oculto en formularios
