Handoff carta 46956: traducciones Haiku + evangelios descargados + scripts; despliegue prod pendiente (issue #88, #87)
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Ciclo carta nueva — deja en la categoría "carta de la semana" SOLO la carta nueva,
|
||||
* en TODOS los idiomas (ES + EN/FR/IT/PT), moviendo las anteriores a "cartas de otras
|
||||
* semanas". Necesario para que el menú/categoría de cada idioma tenga count=1 y redirija
|
||||
* directo al single (carta-semana-plugin). En ES suele hacerse al importar; las
|
||||
* traducciones NO lo heredan -> ejecutar esto tras publicar las traducciones.
|
||||
*
|
||||
* Deriva los términos por Polylang desde los términos ES base:
|
||||
* cartasemana = term 6 | cartas-de-otras-semanas = term 21
|
||||
*
|
||||
* Uso: CARTA=<es_id> php demote_old_cartasemana.php (dry-run)
|
||||
* APPLY=1 CARTA=<es_id> php demote_old_cartasemana.php
|
||||
*/
|
||||
require getenv('FEA_WP_LOAD') ?: '/var/www/html/wp-load.php';
|
||||
$APPLY = getenv('APPLY') === '1';
|
||||
$CARTA = (int)(getenv('CARTA') ?: 0);
|
||||
if (!$CARTA) { fwrite(STDERR,"Falta CARTA=<es_id>\n"); exit(1); }
|
||||
|
||||
$cs_terms = pll_get_term_translations(6); // cartasemana por idioma
|
||||
$otras_terms = pll_get_term_translations(21); // cartas de otras semanas por idioma
|
||||
$carta_tr = pll_get_post_translations($CARTA);
|
||||
|
||||
foreach ($cs_terms as $lang=>$cs) {
|
||||
$keep = $carta_tr[$lang] ?? 0;
|
||||
$otras = $otras_terms[$lang] ?? 0;
|
||||
$posts = get_posts(['post_type'=>'post','numberposts'=>-1,'post_status'=>'any','fields'=>'ids',
|
||||
'tax_query'=>[['taxonomy'=>'category','field'=>'term_id','terms'=>$cs]]]);
|
||||
$moved=0;
|
||||
foreach ($posts as $pid) {
|
||||
if ($pid == $keep) continue;
|
||||
if ($APPLY) {
|
||||
if ($otras) wp_set_object_terms($pid,[(int)$otras],'category',true); // append a otras
|
||||
wp_remove_object_terms($pid,[(int)$cs],'category');
|
||||
}
|
||||
$moved++;
|
||||
}
|
||||
if ($APPLY) clean_term_cache([$cs,$otras],'category');
|
||||
$t=get_term($cs);
|
||||
echo sprintf("%s: %s %d | '%s' count=%d keep=#%d\n", strtoupper($lang),
|
||||
$APPLY?"movidas":"se moverían", $moved, $t->slug, $t->count, $keep);
|
||||
}
|
||||
echo $APPLY ? "APLICADO\n" : "DRY-RUN (APPLY=1 para aplicar)\n";
|
||||
Reference in New Issue
Block a user