<?php
/**  public_html/sitemap.php
 *  Sitemap index limpio, sin BOM, sin cookies y con MIME correcto.
 *  Funciona aunque otros plugins impriman contenido antes.
 */

// 0) Evita avisos/errores visibles en la salida
@ini_set('display_errors', 0);
@error_reporting(0);

// 1) Arranca un búfer al instante para capturar cualquier salida previa
if (!ob_get_level()) { ob_start(); }

// 2) Carga WordPress (modo normal, sin tema) y descarta todo lo que haya salido
if (!defined('WP_USE_THEMES')) define('WP_USE_THEMES', false);
require __DIR__ . '/wp-load.php';

// 3) Limpia TODOS los búferes acumulados (adiós espacios/BOM/HTML previos)
while (ob_get_level()) { @ob_end_clean(); }

// 4) Evita sesiones/cookies en la respuesta
if (function_exists('session_status') && session_status() === PHP_SESSION_ACTIVE) {
    @session_write_close();
}
if (function_exists('header_remove')) {
    @header_remove('Set-Cookie');
}

// 5) Cabeceras correctas para sitemap XML
@header('Content-Type: application/xml; charset=utf-8', true);
@header('Cache-Control: public, max-age=600', true);
@header('X-Robots-Tag: noindex, follow', true);

// 6) Si existe el servidor de sitemaps nativo (WP 5.5+), úsalo y CAPTURA su salida
$xml = '';
if (function_exists('wp_sitemaps_get_server')) {
    $server = wp_sitemaps_get_server();
    if (is_object($server) && method_exists($server, 'render_index')) {
        ob_start();
        $server->render_index();          // esto hace echo del XML
        $xml = ob_get_clean();
    }
}

// 7) Si no se pudo generar con el servidor nativo, genera un índice mínimo válido
if (!is_string($xml) || trim($xml) === '') {
    // Fallback mínimo (válido)
    $loc = esc_url( home_url('/wp-sitemap.xml') );
    $lastmod = gmdate('c');
    $xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>{$loc}</loc>
    <lastmod>{$lastmod}</lastmod>
  </sitemap>
</sitemapindex>
XML;
}

// 8) Emitir SOLO XML limpio
echo $xml;
exit;

