wiki: actualizar portada con modelo carta + slider sync (#38, #43)

2026-05-25 12:22:30 -04:00
parent e0b6446469
commit a94fdbd637
+33 -12
@@ -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 = [])`