<?php
if ( ! defined('ABSPATH') ) { exit; }

/**
 * Includi TUTTE le tassonomie pubbliche nelle sitemap (WP core + Yoast).
 */

// — WP core sitemaps (da WP 5.5+)
add_filter('wp_sitemaps_taxonomies', function(array $tax_objects){
    $all = get_taxonomies(['public' => true], 'objects');
    foreach ($all as $slug => $obj) {
        $tax_objects[$slug] = $obj;
    }
    return $tax_objects;
}, 10, 1);

// — Yoast SEO sitemaps (se attivo)
add_filter('wpseo_sitemap_taxonomies', function(array $taxonomies){
    $all = get_taxonomies(['public' => true], 'names');
    foreach ($all as $slug) {
        if (!in_array($slug, $taxonomies, true)) {
            $taxonomies[] = $slug;
        }
    }
    return $taxonomies;
}, 10, 1);

// — Rendi pubbliche e queryable le tassonomie visibili in admin
add_filter('register_taxonomy_args', function($args, $taxonomy){
    if (!empty($args['public'])) return $args;
    if (!empty($args['show_ui'])) {
        $args['public'] = true;
        $args['publicly_queryable'] = true;
        $args['show_in_rest'] = true;
        if (empty($args['rewrite']) || !is_array($args['rewrite'])) {
            $args['rewrite'] = ['slug' => $taxonomy, 'with_front' => false];
        } else {
            $args['rewrite']['with_front'] = false;
            if (empty($args['rewrite']['slug'])) {
                $args['rewrite']['slug'] = $taxonomy;
            }
        }
    }
    return $args;
}, 10, 2);


// — Rank Math: forza inclusione di tutte le tassonomie nei sitemap
//   - Non escludere mai le tassonomie (override impostazioni UI)
add_filter('rank_math/sitemap/exclude_taxonomy', function($exclude, $taxonomy){
    return false;
}, 10, 2);

//   - Includi anche i termini "vuoti" (utile quando stai componendo contenuti)
add_filter('rank_math/sitemap/exclude_empty_terms', function($exclude, $taxonomy_names){
    return false;
}, 10, 2);

//   - Garantisci che Rank Math consideri tutte le tassonomie pubbliche come "pubbliche" ai suoi fini
add_filter('aioseo_debug_placeholder', function($x){ return $x; }); // no-op to avoid empty block


// — All in One SEO (AIOSEO): aggiungi tutte le tassonomie pubbliche
add_filter('aioseo_public_taxonomies', function($taxonomies, $namesOnly = false){
    // Prendi tutte le tassonomie pubbliche registrate
    $all = get_taxonomies(['public' => true], $namesOnly ? 'names' : 'objects');
    // Se AIOSEO vuole solo i nomi, restituiamo la lista di slug
    if ($namesOnly) {
        return array_values(array_unique(array_merge((array) $taxonomies, array_values($all))));
    }
    // Altrimenti restituiamo oggetti taxonomy uniti
    foreach ($all as $slug => $obj) { $taxonomies[$slug] = $obj; }
    return $taxonomies;
}, 10, 2);

// (Facoltativo) includi versioni tradotte per singolo termine (multilingua) se necessario
add_filter('aioseo_sitemap_term', function($entry, $termId, $taxonomy){
    return $entry; // noop, lasciamo a WPML/Polylang se presenti
}, 10, 3);
