From a94fdbd637cce76c579f625489149a6113b7ab08 Mon Sep 17 00:00:00 2001 From: rafa Date: Mon, 25 May 2026 12:22:30 -0400 Subject: [PATCH] wiki: actualizar portada con modelo carta + slider sync (#38, #43) --- Portada-y-shortcodes.md | 45 ++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/Portada-y-shortcodes.md b/Portada-y-shortcodes.md index 0d4238e..32643b4 100644 --- a/Portada-y-shortcodes.md +++ b/Portada-y-shortcodes.md @@ -1,24 +1,45 @@ # Portada y shortcodes -Todo el render de la portada vive en el mu-plugin `fea-homepage.php`. +El render de la portada vive en mu-plugins: -- **Local:** `wordpress/wp-content/mu-plugins/fea-homepage.php` (trackeado en git) -- **En el container:** `/var/www/html/wp-content/mu-plugins/fea-homepage.php` -- **Producción:** `/web/wp-content/mu-plugins/fea-homepage.php` +| Fichero | Qué hace | +|---|---| +| `fea-homepage.php` | Shortcodes de portada, CSS, helpers (`fea_card`, `fea_title`, `fea_is_front_page`) | +| `fea-carta-portada.php` | Parser de la carta semanal (sección → posts) que alimenta los shortcodes — ver [#38](../issues/38) | +| `fea-slider-sync.php` | Sincroniza Smart Slider 3 con `uploads/home/` (modelo Joomla `images/home/`) — ver [#43](../issues/43) | + +Paths: +- **Local:** `wordpress/wp-content/mu-plugins/` (trackeado en git) +- **Container:** `/var/www/html/wp-content/mu-plugins/` +- **Producción:** `/web/wp-content/mu-plugins/` ## Shortcodes de portada -| Shortcode | Qué muestra | -|---|---| -| `[fea_carta_semana_hero]` | Hero principal con la carta de la semana actual | -| `[fea_articulos_semana]` | Grid de artículos vinculados a la carta de la semana | -| `[fea_evangelio]` | Bloque de evangelio del domingo | -| `[fea_eucaristia]` | Bloque de eucaristía | -| `[fea_multimedia]` | Bloque de multimedia reciente | -| `[fea_noticia_centro]` | Bloque de "Noticias de alcance" del footer (template part ID 42370) | +| Shortcode | Qué muestra | Fuente principal | Fallback | +|---|---|---|---| +| `[fea_carta_semana_hero]` | Hero con la carta de la semana actual | Carta más reciente de cat 6 | — | +| `[fea_articulos_semana]` | Grid de artículos | Sección "Artículos seleccionados" de la carta | ACF `portada_articulos` → últimos cat 1650 | +| `[fea_evangelio]` | Comentarios al evangelio | Sección "Evangelio y comentarios" de la carta | Cat 1646 + 1647 por fecha | +| `[fea_eucaristia]` | Eucaristía participativa | Sección "Para unas eucaristías…" de la carta | Cat 1648 por fecha | +| `[fea_multimedia]` | Multimedia | Sección "Material multimedia" de la carta | ACF `portada_multimedia` → últimos cats 1649/26/58 | +| `[fea_noticia_centro]` | Bloque footer "Noticias de alcance" (template part 42370) | Cat 41 | — | + +Modelo "carta → portada": ver [Carta de la semana](Carta-de-la-semana) y [#38](../issues/38). El parser de cartas (`fea_extract_sections_from_html`, `fea_carta_section_posts`) extrae los links agrupados por encabezado. Todos los artículos de portada se renderizan con la helper `fea_card()` para que el card sea consistente (avatar + autor + título + extracto). +## Carrusel (Smart Slider 3, slider id 2 "Slider_home") + +El carrusel de la portada NO se edita en wp-admin sino directamente en filesystem: + +- **Carpeta fuente:** `wp-content/uploads/home/` (paralelo al `images/home/` de Joomla) +- **Operativa del editor:** subir/borrar ficheros `.jpg/.png/.webp` en esa carpeta +- **Sincronización automática:** `fea-slider-sync.php` detecta cambios (mtime) y reescribe los slides del slider 2 en `wp_nextend2_smartslider3_slides`. Cero clicks en wp-admin. +- **Disparadores:** hook `template_redirect` en front (primera visita a portada tras cambio) + `admin_init` en backend +- **Forzar resync vía CLI:** `wp eval "fea_slider_home_sync_now(true);"` + +Limpieza del cache SS3: el sync incrementa `wp_nextend2_section_storage.sliderChanged` para forzar regeneración del manifest. Si se rompe la regeneración (slider vacío en portada), restaurar manualmente desde `backup/wp-db/wp_nextend_pre_issue43_*.sql.gz`. + ## Helpers ### `fea_card($post_id, $opts = [])`