# 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