6b61250b0b
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).
75 lines
2.4 KiB
PHP
75 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* IO mínimo de posts WP para el reprocesador EN.
|
|
* get <id> -> escribe /tmp/fea_es.json {title, content, status}
|
|
* update <id> <titlef> <bodyf> -> actualiza post_title/post_content desde ficheros
|
|
* Carga wp-load; portable (local docker o prod via FEA_WP_LOAD).
|
|
*/
|
|
$WP = getenv('FEA_WP_LOAD') ?: '/var/www/html/wp-load.php';
|
|
require $WP;
|
|
|
|
$action = $argv[1] ?? '';
|
|
|
|
if ($action === 'get') {
|
|
$id = (int)$argv[2];
|
|
$p = get_post($id);
|
|
if (!$p) { fwrite(STDERR, "no existe $id\n"); exit(1); }
|
|
file_put_contents('/tmp/fea_es.json', json_encode([
|
|
'id' => $id,
|
|
'title' => $p->post_title,
|
|
'content' => $p->post_content,
|
|
'status' => $p->post_status,
|
|
'author' => (int)$p->post_author,
|
|
], JSON_UNESCAPED_UNICODE));
|
|
exit(0);
|
|
}
|
|
|
|
if ($action === 'update') {
|
|
$id = (int)$argv[2];
|
|
$title = rtrim(file_get_contents($argv[3]), "\r\n");
|
|
$body = file_get_contents($argv[4]);
|
|
if (!get_post($id)) { fwrite(STDERR, "no existe $id\n"); exit(1); }
|
|
$r = wp_update_post([
|
|
'ID' => $id,
|
|
'post_title' => $title,
|
|
'post_content' => $body,
|
|
], true);
|
|
if (is_wp_error($r)) { fwrite(STDERR, "error: " . $r->get_error_message() . "\n"); exit(1); }
|
|
fwrite(STDOUT, "ok actualizado $id\n");
|
|
exit(0);
|
|
}
|
|
|
|
if ($action === 'getmeta') {
|
|
echo get_post_meta((int)$argv[2], $argv[3], true);
|
|
exit(0);
|
|
}
|
|
|
|
if ($action === 'setaudio') { // setaudio <id> <relpath> [voice_id]
|
|
$id = (int)$argv[2];
|
|
$voice = $argv[4] ?? 'NicoFeadulta2026';
|
|
update_post_meta($id, 'fea_audio_url', home_url($argv[3]));
|
|
update_post_meta($id, 'fea_audio_voice', $voice);
|
|
update_post_meta($id, 'fea_audio_done', '1');
|
|
delete_post_meta($id, 'fea_audio_error');
|
|
fwrite(STDOUT, "ok " . home_url($argv[3]) . "\n");
|
|
exit(0);
|
|
}
|
|
|
|
if ($action === 'setflag') { // setflag <id> <key> <value>
|
|
update_post_meta((int)$argv[2], $argv[3], $argv[4]);
|
|
exit(0);
|
|
}
|
|
|
|
if ($action === 'unsetaudio') { // unsetaudio <id> (rollback: despublica el audio)
|
|
$id = (int)$argv[2];
|
|
delete_post_meta($id, 'fea_audio_url');
|
|
delete_post_meta($id, 'fea_audio_voice');
|
|
delete_post_meta($id, 'fea_audio_done');
|
|
delete_post_meta($id, 'fea_audio_error');
|
|
fwrite(STDOUT, "ok despublicado $id\n");
|
|
exit(0);
|
|
}
|
|
|
|
fwrite(STDERR, "uso: get|update|getmeta|setaudio|setflag|unsetaudio\n");
|
|
exit(2);
|