Sitemap combinado: WordPress + codigo custom en un dominio - ilustracion

Sitemap combinado: WordPress + codigo custom en un dominio

En pocas palabras: Creá un sitemap index en la raíz (/sitemap.xml) que referencie el wp-sitemap.xml nativo de WordPress (disponible desde la versión 5.5, agosto de 2020) y un sitemap propio con las URLs del código custom. Ese archivo maestro es el que enviás a Google Search Console.

Para crear un sitemap único en un sitio que mezcla WordPress y código custom, generá un sitemap index en la raíz (/sitemap.xml) que referencie por un lado el wp-sitemap.xml nativo de WordPress y por otro un sitemap propio con las URLs custom. Ese archivo maestro es el que enviás a Google Search Console. Es la salida más limpia cuando alguien busca ‘how to create’ un sitemap combinado en WordPress.

Un sitemap index es un archivo XML que no lista páginas sino otros sitemaps. Google lo trata como un directorio: lee cada sitemap referenciado y rastrea las URLs de todos. Por eso podés apuntar al sitemap que WordPress genera solo desde la versión 5.5 (agosto de 2020) y, en paralelo, a uno que armaste a mano para las secciones que viven fuera de WordPress.

En 30 segundos

  • WordPress ya trae sitemap nativo desde la 5.5: se sirve en wp-sitemap.xml sin plugins.
  • El sitemap nativo solo mapea contenido de WordPress: posts, páginas, custom post types, taxonomías y autores. Lo custom queda afuera.
  • La solución es un sitemap index en la raíz que agrupe el de WordPress más el tuyo custom.
  • Límite duro del protocolo: 50.000 URLs y 50 MB sin comprimir por archivo. WordPress por defecto corta en 2.000 URLs por sub-sitemap.
  • A Google le enviás una sola URL: el index. Él se encarga de leer los dos ramales.

WordPress es un sistema de gestión de contenido de código abierto desarrollado por Automattic, que permite crear y administrar sitios web sin requerir conocimientos avanzados de programación. Es utilizado por millones de sitios web, desde blogs hasta tiendas en línea y portales de noticias.

¿Qué es una arquitectura híbrida de WordPress con código custom?

Una arquitectura híbrida es un solo dominio donde WordPress maneja una parte del sitio (típico: el blog o el catálogo) y hay código propio, fuera del core de WordPress, corriendo en otras rutas del mismo dominio. Ejemplo: miempresa.com/blog es WordPress, pero miempresa.com/app es una SPA en React y miempresa.com/api son endpoints PHP hechos a mano.

¿Por qué alguien termina acá? Casi siempre por evolución, no por diseño.

  • Migración gradual: pasás un sitio legacy a WordPress de a pedazos y convivís meses con las dos cosas.
  • Requerimientos que WordPress no cubre bien: un configurador de productos, un panel de cuenta, un buscador propio.
  • Performance parcial: dejás en estático o en un microservicio las secciones que reciben mucho tráfico y no querés que toquen la base de WordPress.

Si estás pensando en montar una de estas, importa dónde la alojás: cuanto más control tengas sobre la raíz del dominio y el DNS, más fácil te resulta después servir un sitemap.xml propio. Un hosting WordPress como el de Donweb te deja tocar la raíz sin pelear con reglas raras del panel.

¿Cómo funciona el sitemap nativo de WordPress 5.5 o superior?

Desde WordPress 5.5, el core genera un sitemap XML solo, sin plugins, disponible en tudominio.com/wp-sitemap.xml. Ese archivo es un index: no contiene URLs de páginas, sino que apunta a sub-sitemaps separados por tipo de contenido. WordPress arma uno para posts, otro para páginas, otro por cada taxonomía y otro para autores.

La estructura que vas a ver es más o menos así:

wp-sitemap.xml (el index)
 ├─ wp-sitemap-posts-post-1.xml (entradas)
 ├─ wp-sitemap-posts-page-1.xml (páginas)
 ├─ wp-sitemap-taxonomies-category-1.xml
 └─ wp-sitemap-users-1.xml (autores)

Cada sub-sitemap corta a las 2.000 URLs por defecto. Si tenés más, WordPress pagina solo: aparece ...post-2.xml, ...post-3.xml y así. Ese número lo podés subir o bajar con el filtro wp_sitemaps_max_urls, aunque el tope real del protocolo son 50.000 URLs por archivo. Ojo: si instalás Yoast o Rank Math, esos plugins apagan el sitemap nativo y sirven el suyo en sitemap_index.xml. No conviven los dos. Ya lo cubrimos antes en estructura de un sitio WordPress.

¿Por qué el sitemap de WordPress no incluye tus URLs custom?

Porque WordPress solo sabe de lo que vive dentro de WordPress. El generador nativo recorre la base de datos (la tabla wp_posts, las taxonomías, los usuarios) y arma el XML con eso. Una ruta como /app servida por tu propio código, o un /landing-2026.html estático subido por FTP, no existe para WordPress. No está en su base, así que no aparece.

Esto es un problema de SEO concreto, no teórico. Ponele que tu configurador en /app tiene 300 vistas indexables y ninguna figura en el sitemap. Google las puede descubrir por links internos, pero perdés la señal explícita de «estas URLs existen y me importan». En sitios grandes, esa diferencia se nota en la velocidad de indexación.

¿La solución es meterle todo a WordPress? No. La solución es sumar un segundo sitemap y unirlos.

¿Cuáles son las opciones para crear un sitemap combinado?

Hay tres caminos para unir el contenido de WordPress con el custom, y cuál elegís depende de si tus URLs custom son fijas o cambian solas.

MétodoCuándo convieneEsfuerzoSe actualiza solo
Sitemap custom manual (XML estático)Pocas URLs custom que casi no cambianBajoNo
Sitemap dinámico con PHPURLs custom que salen de una base o carpetaMedio
Plugin que permite sumar URLs externasNo querés tocar códigoBajoDepende del plugin
wordpress how create diagrama explicativo

El manual es el más rápido de arrancar y el que peor envejece: cada vez que agregás una landing, tenés que editar el XML a mano. El dinámico con PHP es más laburo al inicio pero después se mantiene solo. El del plugin zafa si no tocás código, aunque quedás atado a lo que ese plugin soporte (muchos solo agregan URLs de a una, cargadas a mano). Complementá con incluir todas tus landing pages.

Paso a paso: cómo armar el sitemap index en la raíz

El método recomendado es un sitemap.xml en la raíz del dominio que actúe de index maestro y referencie los dos ramales. Es el enfoque que Google documenta para combinar sitemaps: un index puede listar cualquier sitemap del mismo dominio, sin importar quién lo generó.

El archivo maestro queda así de simple:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <sitemap>
 <loc>https://tudominio.com/wp-sitemap.xml</loc>
 </sitemap>
 <sitemap>
 <loc>https://tudominio.com/custom-sitemap.xml</loc>
 </sitemap>
</sitemapindex>

Tres cosas para no arruinarlo. Primero: todos los sitemaps referenciados tienen que estar en el mismo dominio, si no Google los ignora. Segundo: si WordPress ocupa la raíz, no vas a poder crear un archivo físico llamado sitemap.xml sin que el rewrite lo intercepte; en ese caso servilo por PHP o dale otro nombre, como /master-sitemap.xml. Tercero: acordate de listar este index (no los sub-sitemaps sueltos) en tu robots.txt con la línea Sitemap: https://tudominio.com/sitemap.xml.

¿Cómo generar dinámicamente el sitemap del código custom?

Para que el ramal custom se actualice solo, generalo con un script PHP que arme el XML a partir de tu fuente de datos (una tabla, un array, un scan de carpeta). Con DOMDocument tenés control fino sobre el formato y te asegurás un XML válido. Un esqueleto mínimo:

<?php
header('Content-Type: application/xml; charset=utf-8');

$urls = ['/app', '/app/planes', '/landing-2026']; // salí de tu DB acá

$doc = new DOMDocument('1.0', 'UTF-8');
$doc->formatOutput = true;
$root = $doc->createElementNS('http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset');
$doc->appendChild($root);

foreach ($urls as $path) {
 $url = $doc->createElement('url');
 $url->appendChild($doc->createElement('loc', 'https://tudominio.com' . $path));
 $root->appendChild($url);
}
echo $doc->saveXML();

Si tus URLs custom salen de archivos en una carpeta, cambiás el array por un glob(). Si salen de una base, por una query. Lo importante es que este endpoint devuelva siempre XML fresco, así cuando sumás una sección nueva no tenés que tocar nada a mano.

Un detalle que se olvida seguido: sumale la fecha de última modificación con <lastmod> en formato ISO 8601. Le da a Google una pista de qué recrawlear primero. Te puede servir nuestra cobertura de validar cambios antes de producción.

¿Cómo enviar el sitemap combinado a Google Search Console?

Enviás una sola URL: la del index maestro. En Google Search Console entrás a la sección «Sitemaps», pegás sitemap.xml (la ruta relativa a tu dominio) y le das enviar. Google lee el index, sigue los dos ramales y en el reporte vas a ver el conteo de URLs descubiertas de cada uno.

Para verificar que las dos partes se están indexando, mirá el reporte de «Páginas» (cobertura). Filtrá por las rutas custom (por ejemplo /app) y confirmá que aparecen como indexadas y no como «Descubierta: actualmente sin indexar». Si el ramal custom no suma URLs a las 48 horas, revisá que el XML valide y que las <loc> sean absolutas con el dominio completo.

Errores comunes al combinar sitemaps (y cómo evitarlos)

  • Mezclar sitemaps de dominios distintos en el mismo index. Google exige que todos vivan bajo el mismo host. Si tu custom corre en un subdominio (app.tudominio.com), necesita su propia propiedad en Search Console.
  • Dejar el nativo y el de Yoast peleando. Si tenés Yoast o Rank Math activo, el wp-sitemap.xml nativo está apagado. Referenciá el que sirve el plugin (sitemap_index.xml), no el que ya no existe.
  • URLs relativas en el XML. El campo <loc> tiene que ser absoluto: https://tudominio.com/app, nunca /app. Con la ruta relativa el sitemap valida pero Google no la resuelve.
  • Pasarse de los límites y no paginar. Un archivo con más de 50.000 URLs o más de 50 MB sin comprimir se rechaza entero. Si tu ramal custom crece, partilo en custom-sitemap-1.xml, custom-sitemap-2.xml y sumalos al index.

Qué está confirmado y qué depende de tu setup

Confirmado: WordPress genera un sitemap nativo desde la 5.5 en wp-sitemap.xml. Un sitemap index puede referenciar varios sitemaps del mismo dominio, sin importar quién los genere. El tope del protocolo es 50.000 URLs y 50 MB por archivo. Todo esto está en la documentación de Google sobre combinar sitemaps y en el core de WordPress.

Depende de vos: si podés escribir un sitemap.xml físico en la raíz (según cómo esté el rewrite y los permisos del hosting), qué nombre le ponés al index para que no choque con WordPress, y si tu ramal custom lo servís estático o dinámico. Eso no hay receta única: sale de cómo esté montado tu sitio.

Preguntas Frecuentes

¿Qué es un sitemap XML en WordPress?

Un sitemap XML es un archivo que lista las URLs de un sitio para que los buscadores las descubran y rastreen. En WordPress se genera solo desde la versión 5.5 (agosto de 2020) y se sirve en tudominio.com/wp-sitemap.xml, sin necesidad de plugins.

¿El sitemap de WordPress incluye automáticamente mis URLs de código custom?

No. El sitemap nativo solo mapea contenido guardado en la base de WordPress: posts, páginas, custom post types, taxonomías y autores. Cualquier URL servida por código propio o archivos estáticos fuera de WordPress queda excluida y hay que sumarla con un sitemap aparte. Para más detalles técnicos, mirá reparar enlaces que afectan indexación.

¿Puedo combinar WordPress y código custom en el mismo dominio sin romper el sitemap?

Sí, siempre que ambos vivan en el mismo dominio. Creás un sitemap index maestro en la raíz que referencie el wp-sitemap.xml de WordPress y un sitemap propio con las URLs custom. Google los lee como un solo conjunto.

¿Cuál es el límite de tamaño de un archivo sitemap?

El protocolo sitemaps.org y Google fijan un máximo de 50.000 URLs y 50 MB sin comprimir por archivo sitemap. WordPress corta por defecto en 2.000 URLs por sub-sitemap y pagina solo cuando hay más. Si superás el tope, dividí el sitemap en varios y agrupalos en un index.

¿Cómo valido que mi sitemap combinado está bien armado?

Abrí cada URL de sitemap en el navegador y confirmá que el XML carga sin errores y con las <loc> absolutas. Después enviá el index en Google Search Console y revisá el reporte de Sitemaps: te muestra cuántas URLs descubrió de cada ramal y marca los errores de parseo.

Conclusión

El problema no es que WordPress genere mal el sitemap. Lo genera bien, solo que únicamente para lo suyo. En un sitio híbrido, la pieza que falta es un index maestro que junte el wp-sitemap.xml nativo con un sitemap propio de tus URLs custom, y que sea ese index el que enviás a Search Console.

Si tus rutas custom cambian seguido, invertí las dos horas en el generador dinámico con PHP: te ahorra editar XML a mano cada vez que sumás una sección. Y antes de mandar nada a Google, verificá tres cosas: mismo dominio en todos los ramales, URLs absolutas en cada <loc> y el index (no los sub-sitemaps) declarado en tu robots.txt. Con eso, las dos mitades de tu sitio se indexan como una sola.

Fuentes

Volver a

Novedades

Publicaciones relacionadas