sync_carta_from_prod.py - sync carta prod a local (#174) #177

Merged
rafa merged 2 commits from feat/sync-carta-from-prod into main 2026-07-15 03:27:30 +00:00
Showing only changes of commit 130a3292e4 - Show all commits
+13 -1
View File
@@ -19,7 +19,7 @@
// Bootstrap portable. Si WP no está cargado (modo standalone), cargar wp-load. // Bootstrap portable. Si WP no está cargado (modo standalone), cargar wp-load.
// Local (docker): /var/www/html/wp-load.php (por defecto). // Local (docker): /var/www/html/wp-load.php (por defecto).
// Prod: export FEA_WP_LOAD=/web/wp-nuevo/wp-load.php // Prod: export FEA_WP_LOAD=/web/wp-load.php
// (Si se ejecuta vía `wp eval-file`, ABSPATH ya está definido y no se recarga.) // (Si se ejecuta vía `wp eval-file`, ABSPATH ya está definido y no se recarga.)
if (!defined('ABSPATH')) { if (!defined('ABSPATH')) {
$_SERVER['REQUEST_URI'] = $_SERVER['REQUEST_URI'] ?? '/'; $_SERVER['REQUEST_URI'] = $_SERVER['REQUEST_URI'] ?? '/';
@@ -262,6 +262,18 @@ switch ($cmd) {
break; break;
} }
case 'carta_sections': {
// Descubre el cluster de una carta parseando sus propios enlaces internos
// (misma lógica que pinta la portada, fea-carta-portada.php). No depende
// de _carta_id -> sirve aunque ese meta todavía no se haya puesto.
$id = (int) ($argv[2] ?? 0);
if (!$id || !function_exists('fea_parse_carta_sections')) {
fwrite(STDERR, "fea_parse_carta_sections no disponible o id inválido\n"); exit(9);
}
out_json(fea_parse_carta_sections($id));
break;
}
case 'save_translations': { case 'save_translations': {
$payload = json_decode(file_get_contents('php://stdin'), true); $payload = json_decode(file_get_contents('php://stdin'), true);
if (!is_array($payload) || empty($payload['translations']) || !is_array($payload['translations'])) { if (!is_array($payload) || empty($payload['translations']) || !is_array($payload['translations'])) {