<?php
/**
 * Remapea las categorías de las traducciones automáticas (meta traduccion_origen)
 * a los términos traducidos de su propio idioma. Idempotente y sin llamar a Gemma.
 *
 * Arregla las traducciones creadas antes de que fea_translate_helper.php mapeara
 * categorías (issue #75): p.ej. una carta EN que quedó en la categoría ES `cartasemana`
 * pasa a la categoría EN `letter-of-the-week`, poblando el archivo de carta por idioma.
 *
 * Uso: docker exec wordpress-web php /tmp/remap_translation_cats.php
 */

$_SERVER['REQUEST_URI'] = $_SERVER['REQUEST_URI'] ?? '/';
$_SERVER['HTTP_HOST']   = $_SERVER['HTTP_HOST'] ?? 'farmer.taild3aaf6.ts.net';
require_once '/var/www/html/wp-load.php';

if (!function_exists('pll_get_term')) { fwrite(STDERR, "Polylang no disponible\n"); exit(2); }

global $wpdb;
$ids = $wpdb->get_col("SELECT DISTINCT post_id FROM {$wpdb->postmeta} WHERE meta_key='traduccion_origen'");
$fixed = 0;

foreach ($ids as $pid) {
    $pid  = (int) $pid;
    $lang = pll_get_post_language($pid);
    if (!$lang || $lang === 'es') continue;

    $cats    = wp_get_post_categories($pid);
    $mapped  = [];
    $changed = false;
    foreach ($cats as $c) {
        $tc = (int) pll_get_term($c, $lang);
        if ($tc && $tc !== $c) { $mapped[] = $tc; $changed = true; }
        else { $mapped[] = $c; }
    }
    if ($changed) {
        wp_set_post_categories($pid, array_values(array_unique($mapped)));
        $fixed++;
    }
}

echo "Remapeadas categorías en $fixed traducciones (de " . count($ids) . " revisadas)\n";
