docs: migrar documentación a la wiki del repo
Borrados: - AUDITORIA_MIGRACION.md - PLAN_MIGRACION.md - WORDPRESS_CONFIG.md - CARTAS_PARA_MIGRAR.md README.md reducido a puntero a la wiki, que ahora contiene toda la documentación operativa: credenciales, infraestructura, arquitectura WP, áreas funcionales (cartas, evangelios, EFFA, autores, Brevo), scripts, sincronización local→prod y roadmap. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,220 +0,0 @@
|
|||||||
# Auditoría de Migración: Joomla → WordPress
|
|
||||||
**Fecha:** 2026-03-04
|
|
||||||
**Estado general:** Migración mayoritariamente completada, con pendientes importantes
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Resumen de contenido
|
|
||||||
|
|
||||||
### Fuente: 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 no publicados (borrador) | 1.885 | - | - |
|
|
||||||
|
|
||||||
> **Nota:** Los artículos de `jos_content` son páginas de estructura de Joomla (demo, categorías, etc.), no contenido real del sitio. Todo el contenido editorial está en K2.
|
|
||||||
|
|
||||||
### Destino: WordPress
|
|
||||||
|
|
||||||
| Tipo | Total | Publicados | Borrador |
|
|
||||||
|------|-------|-----------|---------|
|
|
||||||
| `wp_posts` (post) | 26.554 | 24.631 | 1.922 |
|
|
||||||
| `wp_posts` (attachment) | 6.195 | 6.195 | - |
|
|
||||||
| `wp_posts` (page) | 1 | 1 | - |
|
|
||||||
| Categorías | 1.351 | - | - |
|
|
||||||
| Tags | 12 | - | - |
|
|
||||||
| Usuarios | 1.182 | - | - |
|
|
||||||
| Menús importados | 19 | - | - |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. Cobertura de migración K2 → WordPress
|
|
||||||
|
|
||||||
| 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** |
|
|
||||||
|
|
||||||
**Conclusión:** Se migraron más K2 items (17.649) que los actualmente publicados en Joomla (15.764). La diferencia de ~1.885 corresponde a artículos que en Joomla estaban en borrador/no publicados y también se importaron (como borradores en WP).
|
|
||||||
|
|
||||||
✅ **No hay artículos K2 publicados sin migrar.**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. Distribución por año
|
|
||||||
|
|
||||||
Comparativa publicados Joomla K2 vs WordPress:
|
|
||||||
|
|
||||||
| 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. Esto es probablemente por la importación de contenido de `jos_content` (páginas de estructura) que comparte rango de fechas. Revisar si hay duplicados en esos rangos.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Problemas detectados
|
|
||||||
|
|
||||||
### 🔴 CRÍTICO
|
|
||||||
|
|
||||||
#### ~~4.1 — 1.922 posts en borrador~~ ✅ DECISIÓN TOMADA (2026-03-04)
|
|
||||||
- Se mantienen como borradores. Son artículos K2 que estaban sin publicar en Joomla. No se tocarán.
|
|
||||||
|
|
||||||
#### ~~4.2 — 508 posts con enlaces internos rotos de Joomla~~ ✅ RESUELTO (2026-03-04)
|
|
||||||
- **Script:** `scripts/fix_joomla_links.php`
|
|
||||||
- **Resultado:** 3.400 posts procesados, **93.030 links reemplazados**, 42 sin resolver
|
|
||||||
- **Sin resolver:** K2 items que no se importaron (papelera/no publicados). Ver `links_no_resueltos.txt`
|
|
||||||
- **Restantes:** 3 posts con `index.php?option=` de jos_content IDs inexistentes (IDs 52, 54, 58, 60)
|
|
||||||
|
|
||||||
#### ~~4.3 — 429 posts con URLs `/es/ayuda/` de Joomla en el contenido~~ ✅ RESUELTO (2026-03-04)
|
|
||||||
- Corregido por el mismo script `scripts/fix_joomla_links.php` junto con el punto 4.2
|
|
||||||
|
|
||||||
### 🟡 IMPORTANTE
|
|
||||||
|
|
||||||
#### ~~4.4 — 100 categorías con nombres numéricos~~ ✅ RESUELTO (2026-03-04)
|
|
||||||
- **Causa real:** El plugin FG importó el campo K2 "Autor" (extra field id=12) usando el valor numérico como nombre de categoría en lugar del nombre del autor
|
|
||||||
- **Script:** `scripts/fix_numeric_categories.php`
|
|
||||||
- **Resultado:** 5 renombradas, 95 fusionadas con categorías de autor ya existentes, 0 sin resolver
|
|
||||||
|
|
||||||
#### 4.5 — 333 posts con referencias a `feadulta.com` en el contenido
|
|
||||||
- **Cantidad:** 333 posts con URLs absolutas al dominio original
|
|
||||||
- **Acción:** Revisar si son imágenes, links externos o internos. Los internos hay que reemplazarlos por URLs relativas del nuevo WordPress.
|
|
||||||
|
|
||||||
#### 4.6 — 81 posts publicados con contenido muy corto (< 100 caracteres)
|
|
||||||
- **Cantidad:** 81 posts
|
|
||||||
- **Causa probable:** Posts de estructura/navegación de Joomla, o migración fallida de contenido
|
|
||||||
- **Acción:** Revisar manualmente o crear query para identificar si son vacíos útiles o basura
|
|
||||||
- **Query:**
|
|
||||||
```sql
|
|
||||||
SELECT ID, post_title, CHAR_LENGTH(post_content) as len
|
|
||||||
FROM wp_posts
|
|
||||||
WHERE post_type='post' AND post_status='publish'
|
|
||||||
AND CHAR_LENGTH(post_content) < 100
|
|
||||||
ORDER BY len ASC;
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.7 — 1 post publicado con contenido vacío
|
|
||||||
- **ID a verificar:**
|
|
||||||
```sql
|
|
||||||
SELECT ID, post_title FROM wp_posts
|
|
||||||
WHERE post_type='post' AND post_status='publish'
|
|
||||||
AND (post_content='' OR post_content IS NULL);
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🟢 MENOR
|
|
||||||
|
|
||||||
#### ~~4.8 — Redirects 301~~ ✅ RESUELTO (2026-03-04)
|
|
||||||
- **Script:** `scripts/generate_k2_redirects.php`
|
|
||||||
- **Resultado:** 17.649 redirects K2 añadidos a `wp_fg_redirect` (total: 17.853)
|
|
||||||
- El plugin FG K2 ya tenía activos `redirect_k2_url` y `redirect_k2_sef_url` → regex automática
|
|
||||||
- Redirect verificado: `301` funcional para URLs `/es/.../item/NNN-alias.html`
|
|
||||||
|
|
||||||
#### 4.9 — Solo 1 página de WordPress
|
|
||||||
- El sitio tiene 1 única página publicada; todo el contenido son posts
|
|
||||||
- Revisar si se necesitan páginas estáticas (Inicio, Acerca de, Contacto)
|
|
||||||
|
|
||||||
#### ~~4.10 — Menus importados con nombres de sistema~~ ✅ RESUELTO (2026-03-04)
|
|
||||||
- Eliminados 13 menús técnicos de Joomla: `art1menu`, `art2menu`, `art3menu`, `comentmenu`, `eucamenu`, `multimenu`, `multi2menu`, `proyemenu`, `secc1menu`, `menuuser6`, `encuesta`, `el-ano-de-la-biblia`, `buscadores`
|
|
||||||
- Quedan 6 menús útiles: `mainmenu`, `secciones`, `colaboradores`, `resumeneslibros`, `idioma`, `libros`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. Estado de medios (attachments)
|
|
||||||
|
|
||||||
| Métrica | Valor |
|
|
||||||
|---------|-------|
|
|
||||||
| Attachments en WordPress | 6.195 |
|
|
||||||
| Attachments con archivo asociado | 6.195 |
|
|
||||||
| Posts con imágenes de feadulta.com | 333 |
|
|
||||||
| Imágenes `/images/stories/` en contenido | 0 |
|
|
||||||
| Imágenes `/media/k2/` en contenido | 0 |
|
|
||||||
|
|
||||||
✅ Los archivos de medios parecen estar correctamente importados (0 referencias a rutas antiguas de K2/stories).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. Usuarios
|
|
||||||
|
|
||||||
- **1.182 usuarios** migrados
|
|
||||||
- Roles verificados (2026-03-04): 1.162 subscribers, 14 authors, 6 administrators — ✅ correcto
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. Pendientes de migración por tipo de contenido
|
|
||||||
|
|
||||||
Basado en los scripts de importación presentes (`/home/rafa/*.php`):
|
|
||||||
|
|
||||||
| Script | Estado | Notas |
|
|
||||||
|--------|--------|-------|
|
|
||||||
| `import_stories.php` | ✅ Ejecutado | 13 importados (pocos) |
|
|
||||||
| `import_portadas.php` | ✅ Ejecutado | 2.385 de 2.388 OK |
|
|
||||||
| `import_homilias.php` | ⚠️ Revisar | Ver `import_homilias.log` |
|
|
||||||
| `import_jornada.php` | ⚠️ Revisar | Ver `import_jornada.log` |
|
|
||||||
| `import_pensamientos.php` | ❓ Sin log | Verificar si se ejecutó |
|
|
||||||
| `import_libros_sub.php` | ❓ Sin log | Verificar si se ejecutó |
|
|
||||||
| `import_remaining.php` | ❓ Sin log | Verificar si se ejecutó |
|
|
||||||
| `bulk_import.php` | ❓ Sin log | Verificar si se ejecutó |
|
|
||||||
| `fix_attachments.php` | ❓ Sin log | Verificar si se ejecutó |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 8. Cartas Semanales
|
|
||||||
|
|
||||||
- Análisis completo disponible en `analisis-cartas/`
|
|
||||||
- 4 cartas de prueba identificadas con 104 artículos vinculados (ver `CARTAS_PARA_MIGRAR.md`)
|
|
||||||
- **Pendiente:** Crear la estructura de "Carta semanal → artículos relacionados" en WordPress
|
|
||||||
- **Pendiente:** Verificar que las 717 entradas en categoría "Cartas de otras semanas" están correctas
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 9. Plan de acción priorizado
|
|
||||||
|
|
||||||
### Prioridad 1 — Contenido roto (bloquea el lanzamiento)
|
|
||||||
- [x] **Arreglar 508 links `index.php?option=`** → ✅ 93.030 links corregidos (2026-03-04)
|
|
||||||
- [x] **Arreglar 429 links `/es/ayuda/`** → ✅ incluido en el mismo script (2026-03-04)
|
|
||||||
- [x] **Renombrar 100 categorías numéricas** → ✅ resuelto, eran IDs del campo K2 "Autor" (2026-03-04)
|
|
||||||
|
|
||||||
### Prioridad 2 — Calidad de contenido
|
|
||||||
- [x] **1.922 borradores** → se mantienen como borradores (decisión tomada)
|
|
||||||
- [x] **Revisar 81 posts con contenido < 100 chars** → ✅ 13 convertidos a borrador (2026-03-04)
|
|
||||||
- [x] **Revisar 333 referencias a feadulta.com** → ✅ son archivos externos (`/anterior/`, `/ediciones/`) — se mantienen (2026-03-04)
|
|
||||||
|
|
||||||
### Prioridad 3 — SEO y estructura
|
|
||||||
- [x] **Implementar redirects 301** → ✅ 17.853 entradas en wp_fg_redirect (2026-03-04)
|
|
||||||
- [ ] **Verificar scripts de importación sin log** (pensamientos, libros, remaining)
|
|
||||||
- [ ] **Estructura Cartas Semanales** → implementar relación carta → artículos
|
|
||||||
- [x] **Revisar roles de los 1.182 usuarios** → ✅ correctos (2026-03-04)
|
|
||||||
- [x] **Simplificar menús** → ✅ 13 eliminados, quedan 6 útiles (2026-03-04)
|
|
||||||
|
|
||||||
### Prioridad 4 — Finalización
|
|
||||||
- [ ] **Configurar página de inicio** del sitio WordPress
|
|
||||||
- [ ] **Activar plugins** pendientes (AdSense, TTS, Wordfence)
|
|
||||||
- [ ] **Test completo** de enlaces, imágenes y navegación
|
|
||||||
- [ ] **Configurar redirects DNS** y lanzar
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*Auditoría generada automáticamente el 2026-03-04. Ejecutar nuevamente tras aplicar correcciones.*
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
# Cartas Semanales - Análisis para Migración de Prueba
|
|
||||||
|
|
||||||
## 📊 Resumen
|
|
||||||
|
|
||||||
**Total de contenidos a migrar:**
|
|
||||||
- 4 Cartas semanales
|
|
||||||
- 104 Artículos relacionados
|
|
||||||
- **Total: 108 contenidos**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📝 Detalle de cada carta
|
|
||||||
|
|
||||||
### CARTA 1: "Los mejores regalos"
|
|
||||||
**URL:** http://localhost:8080/es/ayuda/otras-semanas/8949-los-mejores-regalos.html
|
|
||||||
**Artículos vinculados:** 38
|
|
||||||
|
|
||||||
**Temática:** Navidad, Familia, Encarnación
|
|
||||||
|
|
||||||
**Artículos destacados:**
|
|
||||||
- Misa de medianoche
|
|
||||||
- Natividad de Jesús
|
|
||||||
- Sagrada familia
|
|
||||||
- Familia migrante buscando refugio
|
|
||||||
- Un Dios migrante
|
|
||||||
- Y llega Navidad
|
|
||||||
- La oración y el silencio de Dios
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### CARTA 2: "Palabra Encarnada"
|
|
||||||
**URL:** http://localhost:8080/es/ayuda/otras-semanas/8937-palabra-encarnada.html
|
|
||||||
**Artículos vinculados:** 21
|
|
||||||
|
|
||||||
**Temática:** Adviento, Encarnación, Doctrina
|
|
||||||
|
|
||||||
**Artículos destacados:**
|
|
||||||
- Obra del Espíritu
|
|
||||||
- 4º domingo de Adviento
|
|
||||||
- Le pondrán por nombre Emanuel
|
|
||||||
- El mito de la virgen madre
|
|
||||||
- Leonardo Boff: ecología, espiritualidad y liberación
|
|
||||||
- San Juan de la Cruz
|
|
||||||
- El clamor de León XIV a los presos
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### CARTA 3: "En sus trece"
|
|
||||||
**URL:** http://localhost:8080/es/ayuda/otras-semanas/8910-en-sus-trece.html
|
|
||||||
**Artículos vinculados:** 21
|
|
||||||
|
|
||||||
**Temática:** Adviento, Diaconado femenino, Igualdad en la Iglesia
|
|
||||||
|
|
||||||
**Artículos destacados:**
|
|
||||||
- 3º domingo de Adviento
|
|
||||||
- Revuelta de mujeres en la Iglesia de Madrid
|
|
||||||
- Negativa a ordenar a las mujeres
|
|
||||||
- Modelos de iglesia y abusos de poder
|
|
||||||
- Los sacramentos cambian, el diaconado para las mujeres no
|
|
||||||
- Bonhoeffer: Carta de Navidad desde la cárcel
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### CARTA 4: "Tras el Maestro"
|
|
||||||
**URL:** http://localhost:8080/es/ayuda/otras-semanas/8901-tras-el-maestro.html
|
|
||||||
**Artículos vinculados:** 24
|
|
||||||
|
|
||||||
**Temática:** Adviento, Conversión, Juan Bautista
|
|
||||||
|
|
||||||
**Artículos destacados:**
|
|
||||||
- Convertíos
|
|
||||||
- 2º domingo del tiempo de Adviento
|
|
||||||
- Utopía, acogida, conversión
|
|
||||||
- María de Nazaret: una mujer de carne y hueso
|
|
||||||
- Adviento o el coraje de esperar
|
|
||||||
- La Biblia, los pobres y Gustavo Gutiérrez
|
|
||||||
- El drama de los sacerdotes que mueren de VIH/SIDA
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🗂️ Estructura propuesta para WordPress
|
|
||||||
|
|
||||||
### Opción A: Categorías
|
|
||||||
```
|
|
||||||
Fe Adulta/
|
|
||||||
├── Cartas Semanales/
|
|
||||||
│ ├── Carta: Los mejores regalos (22-29 Dic)
|
|
||||||
│ ├── Carta: Palabra Encarnada (15-22 Dic)
|
|
||||||
│ ├── Carta: En sus trece (8-15 Dic)
|
|
||||||
│ └── Carta: Tras el Maestro (1-8 Dic)
|
|
||||||
│
|
|
||||||
├── Artículos/
|
|
||||||
│ ├── Navidad/
|
|
||||||
│ ├── Adviento/
|
|
||||||
│ ├── Teología/
|
|
||||||
│ ├── Iglesia y Sociedad/
|
|
||||||
│ └── Espiritualidad/
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opción B: Custom Post Type (más estructurado)
|
|
||||||
```
|
|
||||||
Custom Post Types:
|
|
||||||
├── Cartas Semanales (con meta: fecha inicio, fecha fin)
|
|
||||||
└── Artículos (con meta: autor, categoría temática)
|
|
||||||
|
|
||||||
Relaciones:
|
|
||||||
- Cada Carta enlaza a sus Artículos mediante custom fields
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opción C: Híbrido (recomendado)
|
|
||||||
```
|
|
||||||
Post Type: "Post" normal
|
|
||||||
├── Categoría: "Cartas Semanales"
|
|
||||||
│ └── Posts con etiqueta "Carta-YYYY-WW"
|
|
||||||
└── Categoría: "Artículos"
|
|
||||||
└── Posts etiquetados con la carta correspondiente
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔄 Proceso de migración sugerido
|
|
||||||
|
|
||||||
### Fase 1: Exportar desde Joomla
|
|
||||||
```bash
|
|
||||||
# Usar el plugin FG Joomla to WordPress
|
|
||||||
# O exportar manualmente con consultas SQL
|
|
||||||
```
|
|
||||||
|
|
||||||
### Fase 2: Adaptar estructura
|
|
||||||
- Convertir cartas a posts de WordPress
|
|
||||||
- Mantener enlaces entre cartas y artículos
|
|
||||||
- Preservar fechas y autores
|
|
||||||
|
|
||||||
### Fase 3: Configurar relaciones
|
|
||||||
- Usar categories/tags para organizar
|
|
||||||
- O implementar custom fields para enlaces explícitos
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📋 Archivos generados
|
|
||||||
|
|
||||||
- `carta1.html` - Los mejores regalos
|
|
||||||
- `carta2.html` - Palabra Encarnada
|
|
||||||
- `carta3.html` - En sus trece
|
|
||||||
- `carta4.html` - Tras el Maestro
|
|
||||||
- `analisis_enlaces.txt` - Todos los enlaces extraídos
|
|
||||||
|
|
||||||
**Total de contenidos HTML descargados:** ~134 KB
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎯 Próximo paso
|
|
||||||
|
|
||||||
**¿Qué estructura prefieres para WordPress?**
|
|
||||||
1. Opción A - Simple con categorías
|
|
||||||
2. Opción B - Custom Post Type avanzado
|
|
||||||
3. Opción C - Híbrido (categorías + tags)
|
|
||||||
|
|
||||||
Una vez decidido, procedemos a:
|
|
||||||
1. Configurar la estructura en WordPress
|
|
||||||
2. Migrar las 4 cartas + artículos
|
|
||||||
3. Diseñar el template/apariencia
|
|
||||||
4. Probar funcionalidad antes de migrar todo
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
# Plan de Migración: Joomla 3.1 → WordPress
|
|
||||||
|
|
||||||
## 📊 Análisis del sitio actual
|
|
||||||
|
|
||||||
**Sitio:** Fe Adulta - Portal cristiano de renovación de la fe
|
|
||||||
**Joomla:** 3.1 (2012) + PHP 7.4.33 (EOL)
|
|
||||||
**Base de datos:** MySQL
|
|
||||||
**Contenido:**
|
|
||||||
- **8,971 artículos** 📝
|
|
||||||
- **68 categorías**
|
|
||||||
- **Componentes principales:**
|
|
||||||
- K2 (sistema de contenido avanzado)
|
|
||||||
- JCE (editor)
|
|
||||||
- Akeeba Backup
|
|
||||||
- AdminTools
|
|
||||||
- AIMy Sitemap
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎯 Objetivos de la migración
|
|
||||||
|
|
||||||
1. **Modernizar la plataforma:** WordPress + PHP 8.x
|
|
||||||
2. **Simplificar la estructura:** Cartas semanales + artículos enlazados
|
|
||||||
3. **Monetización:** Google AdSense
|
|
||||||
4. **Accesibilidad:** Plugin Text-to-Speech con múltiples voces
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🛠️ Fases de migración
|
|
||||||
|
|
||||||
### Fase 1: Preparación y backup ✅
|
|
||||||
- [x] Entorno Docker levantado
|
|
||||||
- [x] Análisis de contenido completado
|
|
||||||
- [ ] Backup completo con Akeeba
|
|
||||||
- [ ] Export de base de datos
|
|
||||||
|
|
||||||
### Fase 2: Configuración de WordPress
|
|
||||||
- [ ] WordPress instalado (ya tienes el contenedor)
|
|
||||||
- [ ] Tema seleccionado (ligero, optimizado SEO)
|
|
||||||
- [ ] Plugins esenciales:
|
|
||||||
- **Migración:** FG Joomla to WordPress o WP All Import
|
|
||||||
- **AdSense:** Ad Inserter o Advanced Ads
|
|
||||||
- **Text-to-Speech:** Play.ht, Amazon Polly, o similar
|
|
||||||
- **SEO:** Yoast SEO o Rank Math
|
|
||||||
- **Cache:** WP Rocket o W3 Total Cache
|
|
||||||
- **Seguridad:** Wordfence
|
|
||||||
|
|
||||||
### Fase 3: Migración de contenido
|
|
||||||
- [ ] Exportar artículos de Joomla (K2 + content)
|
|
||||||
- [ ] Mapear categorías Joomla → WordPress
|
|
||||||
- [ ] Importar artículos conservando:
|
|
||||||
- Títulos y slugs (SEO)
|
|
||||||
- Categorías y tags
|
|
||||||
- Imágenes y media
|
|
||||||
- Metadatos (autor, fecha)
|
|
||||||
- [ ] Migrar menús
|
|
||||||
- [ ] Migrar usuarios
|
|
||||||
|
|
||||||
### Fase 4: Estructura de "Cartas Semanales"
|
|
||||||
- [ ] Crear custom post type "Cartas Semanales" (o usar posts normales con categoría)
|
|
||||||
- [ ] Cada carta enlaza a artículos de la semana
|
|
||||||
- [ ] Template personalizado para cartas
|
|
||||||
- [ ] Navegación por fechas/semanas
|
|
||||||
|
|
||||||
### Fase 5: AdSense + Text-to-Speech
|
|
||||||
- [ ] Configurar cuenta Google AdSense
|
|
||||||
- [ ] Insertar bloques de anuncios:
|
|
||||||
- Header
|
|
||||||
- Sidebar
|
|
||||||
- Entre contenido
|
|
||||||
- Footer
|
|
||||||
- [ ] Plugin Text-to-Speech:
|
|
||||||
- Configurar voces (masculina/femenina/neutral)
|
|
||||||
- Botón de reproducción en artículos
|
|
||||||
- Opciones de velocidad
|
|
||||||
|
|
||||||
### Fase 6: Testing y optimización
|
|
||||||
- [ ] Probar enlaces internos
|
|
||||||
- [ ] Verificar imágenes rotas
|
|
||||||
- [ ] Optimizar base de datos
|
|
||||||
- [ ] Configurar redirects 301 (Joomla URLs → WordPress URLs)
|
|
||||||
- [ ] Test de velocidad (PageSpeed, GTmetrix)
|
|
||||||
- [ ] Test mobile-responsive
|
|
||||||
|
|
||||||
### Fase 7: Lanzamiento
|
|
||||||
- [ ] DNS apuntando al nuevo servidor
|
|
||||||
- [ ] SSL/HTTPS configurado
|
|
||||||
- [ ] Sitemap XML generado
|
|
||||||
- [ ] Google Search Console configurado
|
|
||||||
- [ ] Analytics migrado
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⚙️ Scripts de automatización
|
|
||||||
|
|
||||||
### 1. Export masivo de contenido
|
|
||||||
```bash
|
|
||||||
# Exportar todos los artículos + K2
|
|
||||||
./scripts/export-joomla-content.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Conversión de formato
|
|
||||||
```bash
|
|
||||||
# Convertir HTML de Joomla a formato WordPress
|
|
||||||
./scripts/convert-content.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Import a WordPress
|
|
||||||
```bash
|
|
||||||
# Usar WP-CLI para importar en lote
|
|
||||||
./scripts/import-to-wordpress.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Migración de imágenes
|
|
||||||
```bash
|
|
||||||
# Descargar y reorganizar media
|
|
||||||
./scripts/migrate-media.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📋 Checklist crítico
|
|
||||||
|
|
||||||
- [ ] **Backup completo** antes de cualquier cambio
|
|
||||||
- [ ] **Probar en staging** antes de producción
|
|
||||||
- [ ] **Mapeo de URLs** para no perder SEO
|
|
||||||
- [ ] **Conservar metadatos** (fechas, autores)
|
|
||||||
- [ ] **Migrar comentarios** (si aplica)
|
|
||||||
- [ ] **Verificar formularios de contacto**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚨 Riesgos y mitigaciones
|
|
||||||
|
|
||||||
| Riesgo | Mitigación |
|
|
||||||
|--------|------------|
|
|
||||||
| Pérdida de SEO | Redirects 301 + conservar URLs |
|
|
||||||
| Imágenes rotas | Script de validación post-migración |
|
|
||||||
| Contenido duplicado | Limpiar antes de importar |
|
|
||||||
| Downtime largo | Preparar todo en paralelo, switch rápido |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⏱️ Estimación de tiempo
|
|
||||||
|
|
||||||
- **Preparación:** 2-3 horas
|
|
||||||
- **Configuración WordPress:** 3-4 horas
|
|
||||||
- **Migración de contenido:** 6-8 horas (automatizado)
|
|
||||||
- **Testing:** 4-6 horas
|
|
||||||
- **Total:** ~20 horas de trabajo distribuido en 3-5 días
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📝 Notas
|
|
||||||
|
|
||||||
- **K2:** El componente K2 tiene estructura propia, necesita exportación especial
|
|
||||||
- **8,971 artículos:** Migración por lotes (500-1000 a la vez)
|
|
||||||
- **Cartas semanales:** Posible crear taxonomía personalizada o usar categoría + custom fields
|
|
||||||
- **Text-to-Speech:** Amazon Polly es robusto, Play.ht tiene mejores voces en español
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Siguiente paso:** ¿Empezamos por el export de contenido o prefieres configurar WordPress primero?
|
|
||||||
@@ -1,111 +1,38 @@
|
|||||||
# Joomla → WordPress Migration
|
# feadulta.org — Migración Joomla → WordPress
|
||||||
|
|
||||||
## Estructura del Proyecto
|
Working tree del proyecto feadulta.org. WordPress nuevo, scripts de migración K2 → WP, mu-plugins custom.
|
||||||
|
|
||||||
|
**La documentación operativa está en la [wiki del repo](http://localhost:3000/rafa/feadulta/wiki).**
|
||||||
|
|
||||||
|
## Enlaces rápidos
|
||||||
|
|
||||||
|
- [Wiki — Home](http://localhost:3000/rafa/feadulta/wiki)
|
||||||
|
- [Credenciales y accesos](http://localhost:3000/rafa/feadulta/wiki/Credenciales-y-accesos)
|
||||||
|
- [Infraestructura](http://localhost:3000/rafa/feadulta/wiki/Infraestructura)
|
||||||
|
- [Arquitectura WordPress](http://localhost:3000/rafa/feadulta/wiki/Arquitectura-WordPress)
|
||||||
|
- [Sincronización local → producción](http://localhost:3000/rafa/feadulta/wiki/Sincronizacion-local-prod)
|
||||||
|
- [Limitaciones del servidor de producción](http://localhost:3000/rafa/feadulta/wiki/Limitaciones-servidor-prod)
|
||||||
|
- [Roadmap](http://localhost:3000/rafa/feadulta/wiki/Roadmap)
|
||||||
|
- [Issues](http://localhost:3000/rafa/feadulta/issues)
|
||||||
|
|
||||||
|
## Estructura local
|
||||||
|
|
||||||
```
|
```
|
||||||
~/joomla-migration/
|
/home/rafa/joomla-migration/
|
||||||
├── docker-compose.yml # Configuración de contenedores
|
├── wordpress/ WP local (Docker)
|
||||||
├── setup.sh # Script inicial (ejecutar primero)
|
│ └── wp-content/mu-plugins/ fea-homepage.php, carta-semana-plugin.php (trackeados)
|
||||||
├── restore-backup.sh # Script de restauración (ejecutar segundo)
|
├── joomla/ Joomla legacy restaurado (solo lectura, port 8080)
|
||||||
├── backup/ # Backup original de Akeeba
|
├── scripts/ Importadores, fixers, cutover
|
||||||
├── joomla/ # Joomla restaurado (puerto 8080)
|
├── analisis-cartas/ Histórico de cartas semanales
|
||||||
└── wordpress/ # WordPress limpio (puerto 8081)
|
├── evangelios_html/ HTML de los evangelios
|
||||||
|
└── docker-compose.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
## Paso a Paso
|
## Arrancar el entorno local
|
||||||
|
|
||||||
### 1. Inicializar Entorno
|
|
||||||
|
|
||||||
Abre tu terminal WSL y ejecuta:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/joomla-migration
|
cd /home/rafa/joomla-migration
|
||||||
bash setup.sh
|
docker compose up -d
|
||||||
|
# WordPress: https://farmer.taild3aaf6.ts.net/fea/ (Tailscale + Caddy)
|
||||||
|
# Joomla (legacy, consulta): http://localhost:8080
|
||||||
```
|
```
|
||||||
|
|
||||||
Esto va a:
|
|
||||||
- Descargar Akeeba Kickstart
|
|
||||||
- Levantar contenedores Docker (Joomla + WordPress + MySQL)
|
|
||||||
- Instalar extensiones PHP necesarias
|
|
||||||
|
|
||||||
### 2. Restaurar Backup
|
|
||||||
|
|
||||||
```bash
|
|
||||||
bash restore-backup.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Esto copia los archivos al contenedor web.
|
|
||||||
|
|
||||||
### 3. Restaurar con Kickstart
|
|
||||||
|
|
||||||
Abre tu navegador en: **http://localhost:8080/kickstart.php**
|
|
||||||
|
|
||||||
**Datos de conexión MySQL:**
|
|
||||||
- Host: `joomla-db`
|
|
||||||
- Database: `joomla_db`
|
|
||||||
- User: `joomla_user`
|
|
||||||
- Password: `joomla_pass`
|
|
||||||
|
|
||||||
Sigue el asistente de Kickstart para extraer y restaurar el backup.
|
|
||||||
|
|
||||||
### 4. Verificar Joomla
|
|
||||||
|
|
||||||
Después de la restauración:
|
|
||||||
- **Frontend:** http://localhost:8080
|
|
||||||
- **Admin:** http://localhost:8080/administrator
|
|
||||||
|
|
||||||
### 5. Eliminar Kickstart (seguridad)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker exec joomla-web rm /var/www/html/kickstart.php
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Comandos Útiles
|
|
||||||
|
|
||||||
**Ver logs de contenedores:**
|
|
||||||
```bash
|
|
||||||
docker logs joomla-web
|
|
||||||
docker logs joomla-db
|
|
||||||
```
|
|
||||||
|
|
||||||
**Acceder al contenedor:**
|
|
||||||
```bash
|
|
||||||
docker exec -it joomla-web bash
|
|
||||||
```
|
|
||||||
|
|
||||||
**Parar todo:**
|
|
||||||
```bash
|
|
||||||
docker compose down
|
|
||||||
```
|
|
||||||
|
|
||||||
**Parar y eliminar datos:**
|
|
||||||
```bash
|
|
||||||
docker compose down -v
|
|
||||||
```
|
|
||||||
|
|
||||||
**Reiniciar:**
|
|
||||||
```bash
|
|
||||||
docker compose restart
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Accesos
|
|
||||||
|
|
||||||
| Servicio | URL | Puerto |
|
|
||||||
|----------|-----|--------|
|
|
||||||
| Joomla Frontend | http://localhost:8080 | 8080 |
|
|
||||||
| Joomla Admin | http://localhost:8080/administrator | 8080 |
|
|
||||||
| WordPress | http://localhost:8081 | 8081 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Próximos Pasos
|
|
||||||
|
|
||||||
Una vez Joomla esté restaurado y funcionando:
|
|
||||||
1. OpenClaw analizará la estructura completa
|
|
||||||
2. Planearemos la arquitectura WordPress
|
|
||||||
3. Migraremos contenido de forma automatizada
|
|
||||||
4. Optimizaremos el resultado final
|
|
||||||
|
|||||||
@@ -1,111 +0,0 @@
|
|||||||
# WordPress - Configuración Completada ✅
|
|
||||||
|
|
||||||
## 🔑 Acceso al Panel de Administración
|
|
||||||
|
|
||||||
**URL:** http://localhost:8081/wp-admin
|
|
||||||
**Usuario:** `admin`
|
|
||||||
**Contraseña:** `FeAdulta2024!`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎨 Temas Instalados
|
|
||||||
|
|
||||||
- **Astra** (activo) - Tema ligero y optimizado para contenido
|
|
||||||
- GeneratePress - Alternativa popular
|
|
||||||
- Kadence - Opción moderna
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📦 Plugins Instalados
|
|
||||||
|
|
||||||
### Migración
|
|
||||||
- ✅ **FG Joomla to WordPress** (activo) - Para migrar desde Joomla
|
|
||||||
- ✅ **WordPress Importer** (activo) - Para imports manuales
|
|
||||||
|
|
||||||
### SEO
|
|
||||||
- ✅ **Yoast SEO** (activo) - Optimización SEO
|
|
||||||
|
|
||||||
### Publicidad
|
|
||||||
- ⚪ **Advanced Ads** - Para Google AdSense (inactivo, activar cuando sea necesario)
|
|
||||||
|
|
||||||
### Text-to-Speech
|
|
||||||
- ⚪ **GSpeech TTS** - Plugin TTS con múltiples voces
|
|
||||||
- ⚪ **Text To Speech TTS Accessibility** - Alternativa TTS
|
|
||||||
|
|
||||||
### Seguridad & Performance
|
|
||||||
- ⚪ **Wordfence** - Seguridad y firewall
|
|
||||||
- ⚪ **WP Super Cache** - Cache y optimización
|
|
||||||
|
|
||||||
### Utilidades
|
|
||||||
- ⚪ **Classic Editor** - Editor clásico de WordPress
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⚙️ Configuraciones Aplicadas
|
|
||||||
|
|
||||||
- **Idioma:** Español (es_ES)
|
|
||||||
- **Zona horaria:** Europe/Madrid
|
|
||||||
- **Estructura de permalinks:** `/%postname%/` (SEO-friendly)
|
|
||||||
- **Comentarios:** Deshabilitados por defecto
|
|
||||||
- **Posts por página:** 20
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📋 Próximos Pasos
|
|
||||||
|
|
||||||
### 1. Revisar y personalizar el tema
|
|
||||||
- Accede a **Apariencia → Personalizar**
|
|
||||||
- Configura colores, fuentes, layout
|
|
||||||
- Define logo y favicon
|
|
||||||
|
|
||||||
### 2. Activar y configurar plugins necesarios
|
|
||||||
```bash
|
|
||||||
# Activar GSpeech (Text-to-Speech)
|
|
||||||
docker exec wordpress-web wp plugin activate gspeech --allow-root
|
|
||||||
|
|
||||||
# Activar Advanced Ads (Google AdSense)
|
|
||||||
docker exec wordpress-web wp plugin activate advanced-ads --allow-root
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Preparar estructura de "Cartas Semanales"
|
|
||||||
Opciones:
|
|
||||||
- **a)** Categoría especial "Cartas Semanales"
|
|
||||||
- **b)** Custom Post Type (más estructurado)
|
|
||||||
- **c)** Taxonomía personalizada
|
|
||||||
|
|
||||||
### 4. Migración de prueba
|
|
||||||
- Seleccionar 2 cartas semanales + artículos
|
|
||||||
- Probar el plugin FG Joomla to WordPress
|
|
||||||
- Revisar resultado y ajustar
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔧 Comandos Útiles
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Ver todos los plugins
|
|
||||||
docker exec wordpress-web wp plugin list --allow-root
|
|
||||||
|
|
||||||
# Activar un plugin
|
|
||||||
docker exec wordpress-web wp plugin activate NOMBRE_PLUGIN --allow-root
|
|
||||||
|
|
||||||
# Ver temas
|
|
||||||
docker exec wordpress-web wp theme list --allow-root
|
|
||||||
|
|
||||||
# Crear un usuario nuevo
|
|
||||||
docker exec wordpress-web wp user create USUARIO email@example.com --role=editor --allow-root
|
|
||||||
|
|
||||||
# Hacer backup de la BD
|
|
||||||
docker exec wordpress-mysql mysqldump -u wordpress -pwordpress wordpress_db > backup.sql
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📝 Notas
|
|
||||||
|
|
||||||
- **Base de datos:** wordpress_db
|
|
||||||
- **Usuario DB:** wordpress / wordpress
|
|
||||||
- **Contenedor web:** wordpress-web (puerto 8081)
|
|
||||||
- **Contenedor MySQL:** wordpress-mysql
|
|
||||||
|
|
||||||
El sitio está listo para empezar la migración de prueba. 🚀
|
|
||||||
Reference in New Issue
Block a user