diff --git a/Alta-boletin-Brevo.md b/Alta-boletin-Brevo.md new file mode 100644 index 0000000..a0c7ba0 --- /dev/null +++ b/Alta-boletin-Brevo.md @@ -0,0 +1,56 @@ +# Alta al boletín (Brevo) + +Formulario de suscripción al boletín. Embebido como iframe del formulario de Brevo (antes SendinBlue). + +## Páginas + +| Entorno | Page ID | Slug | +|---|---|---| +| Local | 43892 | `alta` | +| Producción | 43893 | `alta` | + +Título de ambas: **"Recibir la carta de novedades"**. + +## URL del formulario Brevo + +Cuenta Brevo ID `c3555982`. URL completa del iframe: + +``` +https://c3555982.sibforms.com/serve/MUIFANWlhl9iWHgEiWy2i3jSLlsBjc5BpOUzbn8JmYAR7P7A9V-3KDE3A8IhRNYE4TNG7iL2ahP-3WQlPmDLNe2zVm3bLd2BKdJF6RuF9rhobQCn4q-ryKV0XMSJLpkaLgT4h-DlCVDpt3BDNggapNhNRIT2AZoHvRpfqN91HGQ3p_38M3VAi7o2eVmDgSH4ARfqAK6bz8tlm6Lw0A== +``` + +## Contenido de la página (HTML) + +Bloque HTML único con CSS embebido + iframe: + +```html + + +
+ +
+ +``` + +## Detalle CSS importante + +El selector del título es **`.wp-block-post-title`** (FSE), NO `.entry-title` (Astra). Esto es porque las páginas usan el template FSE de Twenty Twenty-Five, no el layout clásico de Astra. + +Si el título no se centra o aparece muy grande, comprobar que estás apuntando al selector FSE correcto. Ver [Arquitectura WordPress](Arquitectura-WordPress) para entender por qué. + +## Entrada en el menú principal + +Añadida en `wp_navigation` ID=1 (el nav block FSE). + +| Entorno | URL | +|---|---| +| Local | `https://farmer.taild3aaf6.ts.net/fea/alta/` | +| Producción | `http://feadulta.org/alta/` | diff --git a/Arquitectura-WordPress.md b/Arquitectura-WordPress.md new file mode 100644 index 0000000..8f569f1 --- /dev/null +++ b/Arquitectura-WordPress.md @@ -0,0 +1,67 @@ +# Arquitectura WordPress + +## Tema y motor de plantillas + +El sitio mezcla **dos motores** de plantillas. Esto es importante porque el tema activo NO controla todo. + +| Capa | Quién la controla | +|---|---| +| Tema activo | **Astra** (clásico, opciones del Customizer) | +| Single post (post individual) | **Twenty Twenty-Five FSE** (template en BD, `wp_posts` ID 42359, `post_type=wp_template`) | +| Portada | Plantilla FSE + shortcodes inyectados desde mu-plugin | +| EFFA, Brevo, Autores, Evangelios | Páginas con HTML plano + shortcodes | + +> **Regla:** para modificar el layout del *single post* hay que editar `wp_posts` ID 42359 o ir a *Apariencia → Editor → Plantillas*. Cambiar el Customizer de Astra ahí no tiene efecto. + +Ver [CSS y bugs del tema Astra](CSS-y-bugs-Astra) para los problemas conocidos del tema. + +## Plugins activos + +| Plugin | Función | +|---|---| +| **FG Joomla to WordPress Premium + K2** | Importador de la migración. Sigue activo porque maneja redirects 301 K2 (regex automática) y conserva la BD `wp_fg_redirect` con 17.853 entradas | +| **Yoast SEO** | SEO básico, sitemaps | +| **Advanced Custom Fields (ACF)** | Campos personalizados (poco uso por ahora) | +| **Filebird** | Organización en carpetas del media library | +| **Smart Slider 3** | Slider de la portada (n2-ss-slide) | +| **UpdraftPlus** | Backups | +| **Polylang** | Multiidioma — ver [Polylang](Polylang-multiidioma) | + +## mu-plugins (must-use) + +En `wp-content/mu-plugins/`. Trackeados en git. + +| Fichero | Qué hace | +|---|---| +| `fea-homepage.php` | Shortcodes de portada, EFFA, autores, evangelios, listado de noticias, CSS condicional | +| `carta-semana-plugin.php` | Redirects de `/carta-de-la-semana/` → `/category/cartasemana/` y al post directo cuando solo hay uno | +| `fa-custom-css.php.disabled` | Inactivo | +| `stop-redirects.php` | Cortocircuita redirects en escenarios de debug | + +Ver detalles en [Portada y shortcodes](Portada-y-shortcodes), [Carta de la semana](Carta-de-la-semana), [EFFA (Escuela)](EFFA-Escuela), [Autores](Autores). + +> **Aviso de fragilidad:** los mu-plugins se han perdido del contenedor local en sesiones pasadas tras `docker recreate` o restore de UpdraftPlus. La versión canónica vive en producción: `/web/wp-content/mu-plugins/`. + +## Menús + +- El menú visible en el header usa un **navigation block** (`wp_navigation` ID=1) con URLs hardcodeadas (`kind:"custom"`). +- El menú clásico `mainmenu` está en BD pero **no se renderiza** — editarlo no tiene efecto. +- El menú multiidioma se inyecta vía JS en `wp_footer` con un mapa PHP construido con `$wpdb` directo (bypasa el filtro de Polylang). + +## Estructura de contenido + +- **post**: artículos editoriales (la mayoría del contenido, ~24.700 items) +- **page**: páginas estáticas (autores, alta, Evangelios convertidos a posts ya, etc.) +- **attachment**: 6.195 medios migrados +- **wp_navigation**: menús FSE (ID=1 es el principal) +- **wp_template / wp_template_part**: plantillas y partes FSE (ej. footer central con `[fea_noticia_centro]`) + +## Categorías importantes + +Ver [Categorías y términos](Categorias-y-terminos) para el listado completo de term_ids relevantes (EFFA, evangelios, lecturas, eucaristía, multimedia, artículos, cartas). + +## URLs y permalinks + +- Estructura: `/%postname%/` +- Idiomas como subdirectorios gestionados por Polylang (`/en/`, `/fr/`, `/it/`, `/pt/`) +- Categorías: `/category//` diff --git a/Auditoria-migracion.md b/Auditoria-migracion.md new file mode 100644 index 0000000..b25ad1e --- /dev/null +++ b/Auditoria-migracion.md @@ -0,0 +1,145 @@ +# Auditoría de migración + +Estado de la migración Joomla → WordPress en base a la auditoría del **2026-03-04** y deltas posteriores. + +## Resumen de contenido + +### Origen: Joomla + +| Origen | Total | Publicados | En papelera | +|---|---|---|---| +| `jos_content` (Joomla nativo) | 102 | 55 | — | +| `ew4r_k2_items` (K2) | 17.712 | 15.764 | 54 | +| `jos_categories` | 33 | 33 | — | +| `ew4r_k2_categories` | 7 | 7 | — | +| K2 items en borrador | 1.885 | — | — | + +> Los artículos de `jos_content` son páginas de estructura de Joomla (demo, categorías), no contenido editorial. Todo el contenido real vivía en K2. + +### Destino: WordPress + +| Tipo | Total | Publicados | Borrador | +|---|---|---|---| +| `wp_posts` (post) | 26.554 (auditoría) → 24.778 (actual tras delta de mayo) | 24.631 | 1.922 | +| `wp_posts` (attachment) | 6.195 | 6.195 | — | +| `wp_posts` (page) | 1 → varias (autores, alta, evangelios convertidos, EFFA) | — | — | +| Categorías | 1.351 | — | — | +| Tags | 12 | — | — | +| Usuarios | 1.182 | — | — | +| Menús importados | 19 → 6 útiles tras limpieza | — | — | + +## Cobertura K2 → WP + +| Métrica | Valor | +|---|---| +| K2 items publicados (no papelera) en Joomla | **15.764** | +| WP posts con `_fgj2wp_old_k2_id` (migrados de K2) | **17.649** | +| WP posts con `_fgj2wp_old_id` (migrados de `jos_content`) | **8.904** | + +✅ **No hay artículos K2 publicados sin migrar.** Diferencia ~1.885 = K2 que estaban en borrador en Joomla, también importados como drafts en WP (decisión: se mantienen como drafts). + +## Distribución por año (comparativa) + +| Año | Joomla K2 | WordPress | +|---|---|---| +| 2008 | 217 | 217 | +| 2009 | 254 | 254 | +| 2010 | 452 | 451 | +| 2011 | 630 | 613 | +| 2012 | 923 | 1.730 | +| 2013 | 986 | 1.645 | +| 2014 | 931 | 1.696 | +| 2015 | 920 | 1.641 | +| 2016 | 830 | 1.442 | +| 2017 | 739 | 1.288 | +| 2018 | 729 | 1.284 | +| 2019 | 1.002 | 1.495 | +| 2020 | 1.053 | 1.584 | +| 2021 | 1.065 | 1.594 | +| 2022 | 1.032 | 1.615 | +| 2023 | 1.276 | 1.797 | +| 2024 | 1.348 | 2.410 | +| 2025 | 1.380 | 1.814 | +| 2026 | 51 | 61 | + +> Los años 2012-2018 muestran más posts en WP que en Joomla K2 → probablemente por la importación de `jos_content` (páginas de estructura). Revisión pendiente de duplicados en ese rango. + +## Problemas detectados y estado + +### 🔴 Críticos — todos resueltos + +| Problema | Estado | Cómo se resolvió | +|---|---|---| +| 1.922 posts en borrador | ✅ Decisión 2026-03-04 | Se mantienen como borradores (eran drafts en Joomla) | +| 508 posts con enlaces internos rotos (`index.php?option=`) | ✅ 2026-03-04 | `scripts/fix_joomla_links.php` — **93.030 links reemplazados**, 42 sin resolver (K2 papelera) | +| 429 posts con URLs `/es/ayuda/` | ✅ 2026-03-04 | Mismo script | + +### 🟡 Importantes + +| Problema | Estado | Cómo se resolvió | +|---|---|---| +| 100 categorías con nombres numéricos | ✅ 2026-03-04 | Causa: FG importó el campo K2 "Autor" (extra field id=12) como nombre de categoría. `scripts/fix_numeric_categories.php` → 5 renombradas, 95 fusionadas con autores existentes | +| 333 posts con URLs absolutas a `feadulta.com` | ✅ 2026-03-04 | Son archivos externos (`/anterior/`, `/ediciones/`) — se mantienen | +| 81 posts publicados con `< 100` chars | ✅ 2026-03-04 | 13 convertidos a borrador, resto válidos | +| 1 post publicado con contenido vacío | ✅ 2026-03-04 | Revisado | + +### 🟢 Menores + +| Problema | Estado | Cómo se resolvió | +|---|---|---| +| Redirects 301 | ✅ 2026-03-04 | `scripts/generate_k2_redirects.php` — **17.853 entradas** en `wp_fg_redirect`, regex automática del plugin FG K2. Verificado: 301 funcional para `/es/.../item/NNN-alias.html` | +| Solo 1 página en WP | ✅ Solucionado | Creadas páginas de Autores, EFFA, Alta, Evangelios convertidos a posts | +| 13 menús técnicos de Joomla (`art1menu`, `comentmenu`, `eucamenu`…) | ✅ 2026-03-04 | Eliminados. Quedan 6 útiles: `mainmenu`, `secciones`, `colaboradores`, `resumeneslibros`, `idioma`, `libros` | + +## Medios (attachments) + +| Métrica | Valor | +|---|---| +| Attachments en WP | 6.195 | +| Attachments con archivo asociado | 6.195 ✅ | +| Posts con URLs absolutas a `feadulta.com` | 333 (archivos externos legítimos) | +| Imágenes con rutas legacy `/images/stories/` | 0 ✅ | +| Imágenes con rutas legacy `/media/k2/` | 0 ✅ | + +## Usuarios + +- **1.182 usuarios** migrados +- Roles verificados (2026-03-04): 1.162 subscribers, 14 authors, 6 administrators ✅ + +## Delta de mayo 2026 (post-auditoría) + +- **169 K2 items nuevos** (id > 17873) → WP IDs **43914–44082** +- **8 cartas nuevas** (catid 27/40/41, id > 9043) → WP IDs **44083–44090** +- **58 ítems `ew4r_content`** no-carta → WP IDs **44091–44151** +- **8 noticias de alcance del gap** (Joomla ids 8977–9034) → WP IDs **44152–44159** +- **`_carta_id`** asignado a los 169 K2 items nuevos por matching de fecha + +Scripts: ver [Scripts de migración](Scripts-de-migracion). + +## Pendientes documentados en su día (auditoría 2026-03-04) + +- [ ] Verificar scripts de importación sin log: `import_pensamientos.php`, `import_libros_sub.php`, `import_remaining.php`, `bulk_import.php`, `fix_attachments.php` +- [ ] (Resuelto en marzo) Estructura "Carta semanal → artículos relacionados" → implementado via `_carta_id` +- [ ] Configurar página de inicio del sitio → ✅ hecho con 5 portadas Polylang + +## Plan de acción priorizado (histórico) + +| Prioridad | Tarea | Estado | +|---|---|---| +| 1 | Arreglar 508 links `index.php?option=` | ✅ | +| 1 | Arreglar 429 links `/es/ayuda/` | ✅ | +| 1 | Renombrar 100 categorías numéricas | ✅ | +| 2 | 1.922 borradores → revisar | ✅ (decisión: mantener) | +| 2 | Revisar 81 posts cortos | ✅ | +| 2 | Revisar 333 referencias a `feadulta.com` | ✅ | +| 3 | Implementar redirects 301 | ✅ | +| 3 | Verificar scripts de importación sin log | ⏳ pendiente | +| 3 | Estructura Cartas Semanales | ✅ (`_carta_id`) | +| 3 | Revisar roles de usuarios | ✅ | +| 3 | Simplificar menús | ✅ | +| 4 | Página de inicio | ✅ | +| 4 | Plugins post-launch (AdSense, TTS, Wordfence) | ⏳ v2 | +| 4 | Test completo | ⏳ pre-cutover | +| 4 | Configurar DNS y lanzar | ⏳ pre-cutover | + +Ver [Roadmap](Roadmap) y el board de issues para el estado actual. diff --git a/Autores.md b/Autores.md new file mode 100644 index 0000000..aee709a --- /dev/null +++ b/Autores.md @@ -0,0 +1,84 @@ +# Autores + +Listado de autores del portal, en una página dedicada con dos shortcodes. + +## Página "Listado de Autores" + +- **ID:** 18636 +- **Slug:** `autores-lista` +- **Contenido:** HTML plano con dos shortcodes (sin bloques Gutenberg — ver más abajo) + +## Shortcodes (en `fea-homepage.php`) + +### `[fea_autores_habituales]` + +Autores con **≥ 30 artículos en español**, ordenados por número descendente. Muestra conteo entre paréntesis. + +Constantes relevantes: + +```php +FEA_AUTORES_EXCLUIR = [1, 890, 1049, 1540] // Fe Adulta x2, Ediciones Feadulta, José Chicharro +FEA_LANG_ES_TTID = 1404 // term_taxonomy_id del idioma ES en Polylang +``` + +Exclusiones extra para "habituales": IDs 948 y 1048 (Inma Calvo, duplicados de usuario). Por eso la llamada interna es: + +```php +fea_autores_query(30, [948, 1048]) +``` + +### `[fea_autores_completo]` + +Todos los autores con al menos un artículo en ES, orden A-Z. Layout 3 columnas (responsive: 2 en tablet, 1 en móvil). Clase wrapper `fea-autores-completo`. + +## Helpers + +```php +fea_autores_query($min_count, $extra_exclude) +fea_autores_html($rows, $show_count, $extra_class) +``` + +`fea_autores_query` hace `JOIN` con `wp_term_relationships` filtrando por el `term_taxonomy_id` del idioma ES — así solo cuenta artículos en español. + +## Avatares circulares (solución definitiva) + +`border-radius: 50%` y `clip-path` aplicados en CSS son **ignorados por Astra**. La única forma que funciona es un wrapper `` con `overflow:hidden` y los estilos inline: + +```html + + + +``` + +El `overflow:hidden` del span hace el recorte circular real. CSS externo NO puede sobreescribir inline styles porque la cascada lo posiciona después. + +## Bullets eliminados + +`list-style: none` aplicado en clase CSS es **también ignorado por Astra**. Solución: inline en el `