Rescatar 10 docs/ del main local que nunca llegaron a Gitea (issue #194)
main local y origin/main son dos historias sin ancestro comun (ver #194). Analisis del agente: de las 46 commits solo-en-local, el unico contenido que no esta ya reflejado en origin/main via el snapshot de julio (PR #179) son estos 10 ficheros de docs/ (guias, handoffs, planes, benchmark, revisiones de issues). Copiados tal cual desde main con "git show main:docs/X > docs/X". Redactada una password SSH y una password cPanel/FTP en texto plano que tenia handoff-carta-46956-2026-06-17.md (servidor CDMON antiguo) antes de subirlo -- ver .env, nunca en docs versionados. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,269 @@
|
||||
# Actualizar WordPress local desde Joomla produccion
|
||||
|
||||
Runbook para refrescar la copia local migrada a WordPress con los ultimos
|
||||
articulos visibles en Joomla produccion.
|
||||
|
||||
## Contexto
|
||||
|
||||
- Repo local: `/home/rafa/joomla-migration`
|
||||
- WordPress local: `https://farmer.taild3aaf6.ts.net/fea/`
|
||||
- WordPress DB local: contenedor `wordpress-mysql`, base `wordpress_db`
|
||||
- WordPress web local: contenedor `wordpress-web`
|
||||
- Joomla produccion esta detras de Cloudflare. Para leer el origen se uso:
|
||||
|
||||
```bash
|
||||
curl --resolve www.feadulta.com:443:134.0.10.170 -k -L \
|
||||
-A "Mozilla/5.0 Codex Feadulta" https://www.feadulta.com/es/
|
||||
```
|
||||
|
||||
El acceso SSH/MySQL de produccion documentado en scripts antiguos puede estar
|
||||
rotado. Si falla, no asumir que los scripts historicos funcionan contra DB real.
|
||||
|
||||
## Flujo preferente
|
||||
|
||||
Si hay credenciales actuales o dump de produccion, usar una sincronizacion desde
|
||||
base de datos. Los scripts historicos que documentan el modelo son:
|
||||
|
||||
- `scripts/import_new_k2_items.py`
|
||||
- `scripts/import_new_cartas.py`
|
||||
- `scripts/import_new_content.py`
|
||||
- `scripts/fix_imported_k2_metas.py`
|
||||
- `scripts/regenerar_clasificacion_csv.py`
|
||||
- `scripts/aplicar_clasificacion_a_bd.py`
|
||||
|
||||
Ojo con `scripts/import_new_k2_items.py`: la version historica lee
|
||||
`LAST_INSERT_ID()` en otra conexion, asi que puede devolver `0`. En el delta de
|
||||
2026 se corrigieron metadatos con el offset `wp_id = k2_id + 26040`.
|
||||
|
||||
## Flujo de contingencia: HTML publico
|
||||
|
||||
Cuando no hay acceso a la DB de Joomla produccion, usar:
|
||||
|
||||
```bash
|
||||
python3 scripts/import_public_joomla_delta.py
|
||||
python3 scripts/import_public_joomla_delta.py --apply
|
||||
```
|
||||
|
||||
El primer comando es dry-run. El segundo escribe en WordPress local.
|
||||
|
||||
Este importador:
|
||||
|
||||
- lee las cartas visibles configuradas en `CARTAS`;
|
||||
- recorre los enlaces de esas cartas;
|
||||
- importa solo IDs superiores al maximo ya presente en WordPress;
|
||||
- conserva `_fgj2wp_old_k2_id` y `_fgj2wp_old_content_id`;
|
||||
- asigna `Idioma=1`;
|
||||
- asigna `_carta_id` a los K2 importados;
|
||||
- clasifica por seccion de la carta:
|
||||
`lecturas-biblicas`, `comentario-editorial`,
|
||||
`comentarios-al-evangelio`, `eucaristia`, `multimedia`, `articulos`.
|
||||
|
||||
Limitacion importante: este flujo solo ve contenido enlazado desde las cartas
|
||||
publicas actuales. No detecta articulos ocultos, no publicados o no enlazados.
|
||||
|
||||
## Preparar una semana nueva
|
||||
|
||||
1. Localizar las cartas visibles en produccion:
|
||||
|
||||
```bash
|
||||
curl --resolve www.feadulta.com:443:134.0.10.170 -k -L \
|
||||
-A "Mozilla/5.0 Codex Feadulta" \
|
||||
https://www.feadulta.com/es/ayuda/esta-semana.html
|
||||
|
||||
curl --resolve www.feadulta.com:443:134.0.10.170 -k -L \
|
||||
-A "Mozilla/5.0 Codex Feadulta" \
|
||||
https://www.feadulta.com/es/ayuda/semana-pasada.html
|
||||
|
||||
curl --resolve www.feadulta.com:443:134.0.10.170 -k -L \
|
||||
-A "Mozilla/5.0 Codex Feadulta" \
|
||||
https://www.feadulta.com/es/ayuda/otras-semanas.html
|
||||
```
|
||||
|
||||
2. Actualizar `CARTAS` en `scripts/import_public_joomla_delta.py` con:
|
||||
|
||||
- `content_id`
|
||||
- URL relativa
|
||||
- fecha de publicacion
|
||||
- categorias de carta:
|
||||
- actual: `[TERM_CARTA_SEMANA, TERM_CARTAS_OTRAS, TERM_FEADULTA]`
|
||||
- semana pasada: `[TERM_CARTAS_OTRAS, TERM_CARTA_PASADA, TERM_FEADULTA]`
|
||||
- otras semanas: `[TERM_CARTAS_OTRAS, TERM_FEADULTA]`
|
||||
|
||||
3. Ejecutar dry-run y comprobar conteos:
|
||||
|
||||
```bash
|
||||
python3 scripts/import_public_joomla_delta.py
|
||||
```
|
||||
|
||||
4. Aplicar:
|
||||
|
||||
```bash
|
||||
python3 scripts/import_public_joomla_delta.py --apply
|
||||
```
|
||||
|
||||
## Verificaciones
|
||||
|
||||
Maximos importados:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-mysql mysql \
|
||||
-u wordpress_user -pwordpress_pass wordpress_db \
|
||||
--default-character-set=utf8mb4 -B -e "
|
||||
SELECT meta_key,
|
||||
MIN(CAST(meta_value AS UNSIGNED)) min_id,
|
||||
MAX(CAST(meta_value AS UNSIGNED)) max_id,
|
||||
COUNT(*) n
|
||||
FROM wp_postmeta
|
||||
WHERE meta_key IN ('_fgj2wp_old_k2_id','_fgj2wp_old_content_id')
|
||||
GROUP BY meta_key;"
|
||||
```
|
||||
|
||||
Delta exacto para un corte dado:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-mysql mysql \
|
||||
-u wordpress_user -pwordpress_pass wordpress_db \
|
||||
--default-character-set=utf8mb4 -B -e "
|
||||
SELECT pm.meta_key, COUNT(DISTINCT pm.post_id) n
|
||||
FROM wp_postmeta pm
|
||||
WHERE (pm.meta_key='_fgj2wp_old_k2_id'
|
||||
AND CAST(pm.meta_value AS UNSIGNED) > 18102)
|
||||
OR (pm.meta_key='_fgj2wp_old_content_id'
|
||||
AND CAST(pm.meta_value AS UNSIGNED) > 9133)
|
||||
GROUP BY pm.meta_key;"
|
||||
```
|
||||
|
||||
Portada:
|
||||
|
||||
```bash
|
||||
curl -k -L --max-time 20 -sS \
|
||||
https://farmer.taild3aaf6.ts.net/fea/ \
|
||||
| rg -n "La puerta pequeña|Carta de la semana"
|
||||
```
|
||||
|
||||
## Carrusel de portada
|
||||
|
||||
El carrusel no depende de imagen destacada de posts. Se sincroniza desde:
|
||||
|
||||
```text
|
||||
wordpress/wp-content/uploads/home/
|
||||
```
|
||||
|
||||
El plugin responsable es:
|
||||
|
||||
```text
|
||||
wordpress/wp-content/mu-plugins/fea-slider-sync.php
|
||||
```
|
||||
|
||||
Ese plugin replica el modelo Joomla `images/home/` y sincroniza Smart Slider 3
|
||||
slider `2`.
|
||||
|
||||
Detectar imagenes actuales en produccion:
|
||||
|
||||
```bash
|
||||
curl --resolve www.feadulta.com:443:134.0.10.170 -k -L \
|
||||
--max-time 20 -sS -A "Mozilla/5.0 Codex Feadulta" \
|
||||
https://www.feadulta.com/es/ \
|
||||
| rg -o 'images/home/[^"'"'"') ]+'
|
||||
```
|
||||
|
||||
Procedimiento:
|
||||
|
||||
1. Mover las imagenes antiguas fuera de `uploads/home/`.
|
||||
2. Descargar las nuevas desde `https://www.feadulta.com/images/home/...`.
|
||||
3. Copiarlas al contenedor si el host no tiene permisos de escritura:
|
||||
|
||||
```bash
|
||||
docker cp /tmp/pausa_999999000944.jpg \
|
||||
wordpress-web:/var/www/html/wp-content/uploads/home/pausa_999999000944.jpg
|
||||
```
|
||||
|
||||
4. Ajustar propietario:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-web chown www-data:www-data \
|
||||
/var/www/html/wp-content/uploads/home/pausa_999999000944.jpg
|
||||
```
|
||||
|
||||
5. Forzar resync:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-web \
|
||||
wp eval "var_export(fea_slider_home_sync_now(true));" --allow-root
|
||||
```
|
||||
|
||||
6. Verificar Smart Slider:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-mysql mysql \
|
||||
-u wordpress_user -pwordpress_pass wordpress_db \
|
||||
--default-character-set=utf8mb4 -B -e "
|
||||
SELECT id,title,thumbnail,params
|
||||
FROM wp_nextend2_smartslider3_slides
|
||||
WHERE slider=2
|
||||
ORDER BY ordering;"
|
||||
```
|
||||
|
||||
## Acceso wp-admin local
|
||||
|
||||
URL:
|
||||
|
||||
```text
|
||||
https://farmer.taild3aaf6.ts.net/fea/wp-admin
|
||||
```
|
||||
|
||||
Administradores vistos en la copia local:
|
||||
|
||||
- `calvo`
|
||||
- `eqpyk`
|
||||
- `icalvotorre`
|
||||
- `josek`
|
||||
- `pabloarias`
|
||||
- `andrey`
|
||||
|
||||
Si no se conoce la clave, resetear una cuenta local:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-web \
|
||||
wp user update calvo --user_pass='FeAdulta2024!' --allow-root
|
||||
```
|
||||
|
||||
Comprobar rol:
|
||||
|
||||
```bash
|
||||
docker exec wordpress-web \
|
||||
wp user get calvo --fields=ID,user_login,user_email,roles,display_name \
|
||||
--allow-root
|
||||
```
|
||||
|
||||
Si el login sigue fallando despues del reset, probar ventana privada o borrar
|
||||
cookies de `farmer.taild3aaf6.ts.net`.
|
||||
|
||||
## Estado del delta 2026-06-14
|
||||
|
||||
En la actualizacion del 14 de junio de 2026 se importaron:
|
||||
|
||||
- `46` items K2, de `18103` a `18161`;
|
||||
- `14` articulos `content`, de `9134` a `9150`;
|
||||
- cartas:
|
||||
- `9136` / `Uno y Trino`
|
||||
- `9143` / `20 años de fe adulta`
|
||||
- `9150` / `La puerta pequeña`
|
||||
|
||||
Carrusel actualizado de:
|
||||
|
||||
- `pausa_999999000941.jpg`
|
||||
- `pausa_999999000942.jpg`
|
||||
- `pausa_999999000943.jpg`
|
||||
|
||||
a:
|
||||
|
||||
- `pausa_999999000944.jpg`
|
||||
- `pausa_999999000945.jpg`
|
||||
- `pausa_999999000946.jpg`
|
||||
|
||||
Las imagenes antiguas quedaron en:
|
||||
|
||||
```text
|
||||
wordpress/wp-content/uploads/home-old-20260614/
|
||||
```
|
||||
Reference in New Issue
Block a user