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>
6.9 KiB
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, basewordpress_db - WordPress web local: contenedor
wordpress-web - Joomla produccion esta detras de Cloudflare. Para leer el origen se uso:
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.pyscripts/import_new_cartas.pyscripts/import_new_content.pyscripts/fix_imported_k2_metas.pyscripts/regenerar_clasificacion_csv.pyscripts/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:
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_idy_fgj2wp_old_content_id; - asigna
Idioma=1; - asigna
_carta_ida 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
- Localizar las cartas visibles en produccion:
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
- Actualizar
CARTASenscripts/import_public_joomla_delta.pycon:
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]
- actual:
- Ejecutar dry-run y comprobar conteos:
python3 scripts/import_public_joomla_delta.py
- Aplicar:
python3 scripts/import_public_joomla_delta.py --apply
Verificaciones
Maximos importados:
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:
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:
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:
wordpress/wp-content/uploads/home/
El plugin responsable es:
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:
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:
- Mover las imagenes antiguas fuera de
uploads/home/. - Descargar las nuevas desde
https://www.feadulta.com/images/home/.... - Copiarlas al contenedor si el host no tiene permisos de escritura:
docker cp /tmp/pausa_999999000944.jpg \
wordpress-web:/var/www/html/wp-content/uploads/home/pausa_999999000944.jpg
- Ajustar propietario:
docker exec wordpress-web chown www-data:www-data \
/var/www/html/wp-content/uploads/home/pausa_999999000944.jpg
- Forzar resync:
docker exec wordpress-web \
wp eval "var_export(fea_slider_home_sync_now(true));" --allow-root
- Verificar Smart Slider:
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:
https://farmer.taild3aaf6.ts.net/fea/wp-admin
Administradores vistos en la copia local:
calvoeqpykicalvotorrejosekpabloariasandrey
Si no se conoce la clave, resetear una cuenta local:
docker exec wordpress-web \
wp user update calvo --user_pass='FeAdulta2024!' --allow-root
Comprobar rol:
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:
46items K2, de18103a18161;14articuloscontent, de9134a9150;- cartas:
9136/Uno y Trino9143/20 años de fe adulta9150/La puerta pequeña
Carrusel actualizado de:
pausa_999999000941.jpgpausa_999999000942.jpgpausa_999999000943.jpg
a:
pausa_999999000944.jpgpausa_999999000945.jpgpausa_999999000946.jpg
Las imagenes antiguas quedaron en:
wordpress/wp-content/uploads/home-old-20260614/