Cats WP heredadas del importador FG: ~12k posts en cats inventadas (1645-1652) que no existen en Joomla #58

Closed
opened 2026-06-28 19:13:51 +00:00 by rafa · 0 comments
Owner

Origen

Detectado al revisar el post gracias-padre-por-el-espiritu (WP id 5027) en el contexto del #38: aparece en 4 categorías WP cuando en Joomla solo está en 1.

Hallazgo

El importador FG Joomla to WordPress asignó categorías WP que no existían en Joomla, "interpretando" qué era cada post. Resultado: ~12k posts repartidos entre categorías inventadas.

Joomla (origen)

K2 tiene 1 catid primario por item + extra_fields (autor, fecha, idioma). Distribución de items publicados:

K2 cat id Nombre Items
29 Feadulta 16.207
30 Sin categoría 0
24 Secciones 0
25 Fraternidad 0
26 Cristo 0
27 Iglesia 0
28 Espiritualidad 0

Prácticamente todo el contenido vive en una sola categoría K2.

WordPress (tras import)

term_id Slug Nombre Posts
71 feadulta Feadulta 18.053
1650 articulos Artículos 4.750
1647 comentarios-al-evangelio Comentarios al evangelio 3.772
1649 multimedia Multimedia 2.407
1648 eucaristia Eucaristía 1.171
1646 comentario-editorial Comentario editorial 625
1652 otros Otros 545
1645 lecturas-biblicas Lecturas bíblicas 312
1651 noticias Noticias 10

Las 8 cats 1645-1652 no existen en Joomla. Fueron inventadas por el importador FG.

Solapamientos detectados

Pares Posts en ambas
1647 ∩ 1648 (evangelio ∩ eucaristía) 135
1647 ∩ 1650 (evangelio ∩ artículos) 0
1648 ∩ 1650 (eucaristía ∩ artículos) 1

Los 135 evangelio∩eucaristía son posts que aparecen mezclados en /category/eucaristia/ y /category/comentarios-al-evangelio/. El editor original solo los publicó en "Feadulta" (catid 29).

Ejemplos verificados contra Joomla

WP ID Título Cats WP catid Joomla
5027 Gracias, Padre, por el Espíritu 71, 395, 1647, 1648 29 (Feadulta)
9 Experiencia pascual 1647 ∩ 1648 29
110 El espíritu de Dios 1647 ∩ 1648 29

¿Afecta al #38 (carta→portada)?

No. El parser implementado en fea-carta-portada.php resuelve por links explícitos de la carta, no por categoría. La portada muestra exactamente lo que la carta linka en cada sección, independientemente de la categorización del post.

Lo que sí afecta

  • Archivos /category/<slug>/ — muestran posts mezclados (ej. /category/eucaristia/ incluye 1171 posts pero 135 están también en evangelio)
  • Filtros / búsquedas por categoría
  • Polylang — multiplica el problema por idioma

Plan propuesto

Fase 1 — investigación

  1. Identificar heurística usada por el importador FG: ¿se basó en título? ¿extra_fields adicionales no detectados? ¿categorización manual previa al export?
  2. Cuantificar daño total: posts en ≥3 cats inventadas, posts en cats incorrectas según contexto.
  3. Detectar patrones de auto-clasificación inválidos (ej. todos los posts con "Espíritu" en título quedaron en evangelio).

Fase 2 — decidir modelo destino

Opciones:

  • A. Mantener cats 1645-1652 pero limpiar: criterio + SQL para corregir asignaciones erróneas.
  • B. Deprecar 1645-1652, dejar solo "Feadulta" + autor + tags. Más fiel a Joomla. Rompe URLs /category/eucaristia/ etc.
  • C. Híbrido: mantener cats pero re-derivar pertenencia desde los links de las cartas (un post pertenece a "eucaristía" si alguna carta lo linka en su sección eucaristía). Aprovecha el parser de #38.

Preferencia inicial: C — usa el modelo correcto (carta es la fuente de verdad) y mantiene URLs.

Fase 3 — implementación

  • Backup wp_term_relationships
  • Script que recorre cartas, parsea con fea_extract_sections_from_html, y reasigna categorías por sección
  • Validación con E2E + muestreo manual

Fase 4 — Polylang

Verificar que el fix se aplica a posts traducidos también.

No bloqueante para cutover

La portada funciona bien con el modelo actual (#38). Los archivos de categoría siguen funcionando (solo muestran mezclas). Asignado a v1: Pre-cutover solo para que se aborde antes del cutover DNS, no porque bloquee.

Notas

  • Issue origen: #38 (modelo carta→portada)
  • Joomla BD local: joomla-mysql container, db joomla_prod, user joomla_user (ver wiki Credenciales)
  • WP BD: wordpress-mysql, db wordpress_db, user wordpress_user
## Origen Detectado al revisar el post `gracias-padre-por-el-espiritu` (WP id 5027) en el contexto del #38: aparece en 4 categorías WP cuando en Joomla solo está en 1. ## Hallazgo El importador **FG Joomla to WordPress** asignó categorías WP que **no existían en Joomla**, "interpretando" qué era cada post. Resultado: ~12k posts repartidos entre categorías inventadas. ### Joomla (origen) K2 tiene 1 `catid` primario por item + `extra_fields` (autor, fecha, idioma). Distribución de items publicados: | K2 cat id | Nombre | Items | |---:|---|---:| | **29** | **Feadulta** | **16.207** | | 30 | Sin categoría | 0 | | 24 | Secciones | 0 | | 25 | Fraternidad | 0 | | 26 | Cristo | 0 | | 27 | Iglesia | 0 | | 28 | Espiritualidad | 0 | Prácticamente **todo el contenido vive en una sola categoría K2**. ### WordPress (tras import) | term_id | Slug | Nombre | Posts | |---:|---|---|---:| | 71 | feadulta | Feadulta | 18.053 | | 1650 | articulos | Artículos | 4.750 | | 1647 | comentarios-al-evangelio | Comentarios al evangelio | 3.772 | | 1649 | multimedia | Multimedia | 2.407 | | 1648 | eucaristia | Eucaristía | 1.171 | | 1646 | comentario-editorial | Comentario editorial | 625 | | 1652 | otros | Otros | 545 | | 1645 | lecturas-biblicas | Lecturas bíblicas | 312 | | 1651 | noticias | Noticias | 10 | Las 8 cats `1645-1652` **no existen en Joomla**. Fueron inventadas por el importador FG. ### Solapamientos detectados | Pares | Posts en ambas | |---|---:| | 1647 ∩ 1648 (evangelio ∩ eucaristía) | **135** | | 1647 ∩ 1650 (evangelio ∩ artículos) | 0 | | 1648 ∩ 1650 (eucaristía ∩ artículos) | 1 | Los 135 evangelio∩eucaristía son posts que aparecen mezclados en `/category/eucaristia/` y `/category/comentarios-al-evangelio/`. El editor original solo los publicó en "Feadulta" (catid 29). ### Ejemplos verificados contra Joomla | WP ID | Título | Cats WP | catid Joomla | |---:|---|---|---:| | 5027 | Gracias, Padre, por el Espíritu | 71, 395, 1647, 1648 | 29 (Feadulta) | | 9 | Experiencia pascual | 1647 ∩ 1648 | 29 | | 110 | El espíritu de Dios | 1647 ∩ 1648 | 29 | ## ¿Afecta al #38 (carta→portada)? **No.** El parser implementado en `fea-carta-portada.php` resuelve por **links explícitos** de la carta, no por categoría. La portada muestra exactamente lo que la carta linka en cada sección, independientemente de la categorización del post. ## Lo que sí afecta - **Archivos `/category/<slug>/`** — muestran posts mezclados (ej. `/category/eucaristia/` incluye 1171 posts pero 135 están también en evangelio) - **Filtros / búsquedas por categoría** - **Polylang** — multiplica el problema por idioma ## Plan propuesto ### Fase 1 — investigación 1. Identificar **heurística usada por el importador FG**: ¿se basó en título? ¿extra_fields adicionales no detectados? ¿categorización manual previa al export? 2. Cuantificar daño total: posts en ≥3 cats inventadas, posts en cats incorrectas según contexto. 3. Detectar patrones de auto-clasificación inválidos (ej. todos los posts con "Espíritu" en título quedaron en evangelio). ### Fase 2 — decidir modelo destino Opciones: - **A.** Mantener cats 1645-1652 pero limpiar: criterio + SQL para corregir asignaciones erróneas. - **B.** Deprecar 1645-1652, dejar solo "Feadulta" + autor + tags. Más fiel a Joomla. Rompe URLs `/category/eucaristia/` etc. - **C.** Híbrido: mantener cats pero re-derivar pertenencia desde los links de las cartas (un post pertenece a "eucaristía" si alguna carta lo linka en su sección eucaristía). Aprovecha el parser de #38. Preferencia inicial: **C** — usa el modelo correcto (carta es la fuente de verdad) y mantiene URLs. ### Fase 3 — implementación - Backup `wp_term_relationships` - Script que recorre cartas, parsea con `fea_extract_sections_from_html`, y reasigna categorías por sección - Validación con E2E + muestreo manual ### Fase 4 — Polylang Verificar que el fix se aplica a posts traducidos también. ## No bloqueante para cutover La portada funciona bien con el modelo actual (#38). Los archivos de categoría siguen funcionando (solo muestran mezclas). Asignado a `v1: Pre-cutover` solo para que se aborde antes del cutover DNS, no porque bloquee. ## Notas - Issue origen: #38 (modelo carta→portada) - Joomla BD local: `joomla-mysql` container, db `joomla_prod`, user `joomla_user` (ver wiki [Credenciales](../wiki/Credenciales-y-accesos)) - WP BD: `wordpress-mysql`, db `wordpress_db`, user `wordpress_user`
rafa closed this issue 2026-06-28 19:13:51 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rafa/feadulta#58