Sincronizar mu-plugins/ y scripts/ con el estado real del sitio (2026-07-16)

Este repo llevaba desde el 28-jun sin actualizarse (salvo sync_carta_from_prod.py).
Se pone al dia con 3 semanas de trabajo que solo vivian en el checkout local
completo del proyecto:

- Fix del buscador (issue #178): AND obligatorio en FULLTEXT (antes devolvia
  practicamente todo el sitio con cualquier busqueda), exclusion de paginas
  indice residuales de la migracion K2, soporte de frase exacta entre comillas.
- Nuevos mu-plugins ya desplegados a prod: fea-carta-id-api, fea-cloudflare-realip,
  fea-crear-autor-api, fea-gsc-verification, fea-legacy-redirect (cutover
  Joomla->WP, ver issue #162).
- TTS multi-voz por autor, scripts de traduccion, sync de audio a prod,
  homenajes Mardones/Galarreta.

Se mantiene la estructura plana del repo (mu-plugins/ + scripts/, sin el
wordpress/wp-content/ del checkout completo) tal y como documenta el README:
es la convencion establecida para este repo, mas limpia para quien solo
necesita leer el codigo. Anadido .gitignore (cache de Python que no debia
commitearse).

Fuente: checkout local completo del proyecto, rama main (commit 69e849d).
This commit is contained in:
2026-07-15 20:26:43 -04:00
parent d044e229dc
commit 6b61250b0b
35 changed files with 1482 additions and 45 deletions
+31
View File
@@ -790,9 +790,40 @@ function fea_title(string $title): string {
$out = preg_replace_callback('/([\/:¿¡] *)(\p{Ll})/u', function ($m) {
return $m[1] . mb_strtoupper($m[2], 'UTF-8');
}, $out);
$out = fea_recapitalizar_nombres_propios($out);
return $out;
}
/**
* Nombres propios (personas, lugares, "Dios"/"Papa") que deben mantener mayúscula
* inicial en los títulos de portada. Los títulos originales se guardan en MAYÚSCULAS
* y fea_title() los minusculiza salvo la primera letra, así que esta señal se pierde
* para cualquier nombre propio que no sea la primera palabra del título. Añadir aquí
* cuando una carta nueva mencione un nombre que salga mal capitalizado en portada.
* Ver issue rafa/feadulta#160.
*/
function fea_nombres_propios(): array {
return [
'Aguirre', 'Crepin', 'Monga', 'Papa', 'Lampedusa', 'Europa', 'España', 'Dios',
];
}
function fea_recapitalizar_nombres_propios(string $texto): string {
static $regex = null, $map = null;
if ($regex === null) {
$nombres = fea_nombres_propios();
usort($nombres, fn($a, $b) => mb_strlen($b, 'UTF-8') - mb_strlen($a, 'UTF-8'));
$alt = implode('|', array_map(fn($n) => preg_quote($n, '/'), $nombres));
$regex = '/(?<![\p{L}])(' . $alt . ')(?![\p{L}])/iu';
$map = [];
foreach ($nombres as $n) $map[mb_strtolower($n, 'UTF-8')] = $n;
}
return preg_replace_callback($regex, function ($m) use ($map) {
$k = mb_strtolower($m[1], 'UTF-8');
return $map[$k] ?? $m[1];
}, $texto);
}
/** Lista de libros bíblicos (para avatar genérico de lecturas/eucaristías). #61 */
function fea_libros_biblicos(): array {
return [