Files
feadulta/docs/actualizar-wordpress-desde-joomla-prod.md

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, base wordpress_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.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:

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:
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
  1. 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]
  1. Ejecutar dry-run y comprobar conteos:
python3 scripts/import_public_joomla_delta.py
  1. 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:

  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:
docker cp /tmp/pausa_999999000944.jpg \
  wordpress-web:/var/www/html/wp-content/uploads/home/pausa_999999000944.jpg
  1. Ajustar propietario:
docker exec wordpress-web chown www-data:www-data \
  /var/www/html/wp-content/uploads/home/pausa_999999000944.jpg
  1. Forzar resync:
docker exec wordpress-web \
  wp eval "var_export(fea_slider_home_sync_now(true));" --allow-root
  1. 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:

  • calvo
  • eqpyk
  • icalvotorre
  • josek
  • pabloarias
  • andrey

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:

  • 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:

wordpress/wp-content/uploads/home-old-20260614/