$url, 'lang' => $lang, 'kind' => $kind, 'id' => (int) $id]; } // ── 1) MENÚ: 31 rutas base × 5 idiomas ─────────────────────────────────────── // Rutas del menú principal (wp_navigation ID 1). Para no-ES se prefija /{lang}/; // el crawler sigue redirecciones cross-idioma y las marca. $menu_paths = [ '', 'colaboradores', 'portal', 'paraponeraldialafe', 'category/cartasemana', 'category/carta-semana-pasada', 'category/cartas-de-otras-semanas', 'nueva-politica-de-privacidad', 'contactar', 'alta', 'alta-en-effa', 'escuela', 'category/cartas-que-nos-llegan', 'category/tablon-de-anuncios', 'category/asociacion-feadulta', 'numeros', 'category/comunidades-cristianas', 'evangelio-diario-2024', 'category/indice-cronologico', 'category/evangelios-y-comentarios', 'oraciones-eucaristicas', 'a-modo-de-salmo', 'preces-y-oraciones-varias', 'te-creia-un-capricho-mas', 'autores-lista', 'temas', 'multimedia', 'pensamientos', 'indice-cantoral', 'peliculas', 'in-memoriam', ]; $home = home_url('/'); // .../fea/ foreach ($LANGS as $lang) { $prefix = ($lang === 'es') ? $home : $home . $lang . '/'; foreach ($menu_paths as $p) { add($out, $seen, $p === '' ? $prefix : $prefix . $p, $lang, 'menu', 0); } } // ── 2) CATEGORÍAS con contenido ────────────────────────────────────────────── // ES: todas las categorías hide_empty. no-ES: solo las que tienen traducción. $terms = get_terms(['taxonomy' => 'category', 'hide_empty' => true]); foreach ($terms as $t) { $link = get_term_link($t); if (!is_wp_error($link)) add($out, $seen, $link, 'es', 'category', $t->term_id); if (function_exists('pll_get_term')) { foreach (['en', 'fr', 'it', 'pt'] as $lang) { $tr = pll_get_term($t->term_id, $lang); if ($tr) { $l = get_term_link((int) $tr, 'category'); if (!is_wp_error($l)) add($out, $seen, $l, $lang, 'category', $tr); } } } } // ── 3) CONTENIDO no-ES (posts publicados en en/fr/it/pt) ───────────────────── foreach (['en', 'fr', 'it', 'pt'] as $lang) { $q = new WP_Query([ 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1, 'fields' => 'ids', 'lang' => $lang, 'no_found_rows' => true, ]); foreach ($q->posts as $pid) { add($out, $seen, get_permalink($pid), $lang, 'content', $pid); } } file_put_contents('/tmp/verify_urls.json', json_encode($out, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); $by = []; foreach ($out as $r) { $by[$r['kind']] = ($by[$r['kind']] ?? 0) + 1; } fwrite(STDERR, 'enum: ' . count($out) . ' URLs ' . json_encode($by) . "\n");