Generar sitemap con PHP

Crear Google sitemap (Mapa del sitio) XML con PHP y Sitemap.php

Hoy veremos cómo crear un archivo de mapa de sitio XML con PHP; también conocido como sitemap. Para ello vamos a usar una librería ligera llamada sitemap-php.

Generar sitemap con PHP
Generar sitemap con PHP

Google creó Google Sitemaps? (Mapas de sitio de Google en inglés) para que los desarrolladores web pueden publicar listas de enlaces de sus sitios.

Incluir librería

Si utilizas composer ejecuta:

composer require evert/sitemap-php

Incluye el autoload y listo. En caso de que no uses composer, incluye el archivo llamado Sitemap.php que está aquí.

Sin importar la forma en la que incluyas, recuerda indicar que usarás el namespace así:

<span class="pl-k">use</span><span> </span><span class="pl-c1">SitemapPHP\Sitemap</span><span>;</span>

Eso es en la parte superior de tu código.

Generar sitemap con PHP

Primero se debe crear una nueva instancia de Sitemap; pasando la URL absoluta del sitio en el constructor.

En mi caso, para mi sitio, sería así:

$sitemap = new Sitemap("https://parzibyte.me");

Una vez que definimos la URL del sitio, podemos opcionalmente ponerle un nombre de archivo llamando al método setFilename:

$sitemap->setFilename("nombre");

Lo pasamos sin extensión; y cosas como la extensión o sufijos no se pueden cambiar.

Agregar elemento

Para agregar un elemento llamamos al método addItem. Los argumentos en orden son:

  1. Ruta relativa a la base. Por ejemplo, para la página de inicio es / y si hubiera una de contacto sería /contacto
  2. Prioridad, que va del 0 al 1.0. A las páginas más importantes les ponemos 1.0, y a las demás tal vez una menor; pero siempre respetando los límites.
  3. Cada cuánto es posible que cambie el contenido de esa página. Las opciones son: always, hourly, daily, weekly, monthly, yearly ynever
  4. Fecha de modificación, lo cual puede ser una fecha como cadena (la cual será convertida a fecha unix con strtotime) o la marca de tiempo de Unix como entero.

Así que en mi caso agrego la de inicio así:

$sitemap->addItem("/", "1.0", "yearly", "Today");

Estoy agregando un sitio con la máxima prioridad; indicando que se podría actualizar cada año y que la fecha de generación es hoy; aunque en realidad en el XML se quedará la fecha real, no la cadena Today.

Así podemos agregar miles de enlaces, con prioridad distinta. Igualmente podemos llamar a addItem dentro de un ciclo, usar una base de datos y todo eso que permita la programación.

Terminar generación

Cuando hayamos terminado de agregar todos los elementos llamamos al método createSitemapIndex, pasándole la URL relativa a la ubicación del archivo XML.

Normalmente debería ser la misma ruta pero con una barra al final; ya que los sitemap deberían estar en la raíz.

$sitemap->createSitemapIndex("https://parzibyte.me/", "Today");

Código completo

Aquí pondré el código necesario para generar el mapa del sitio. Eso va a crear dos archivos: el índice del sitemap (sitemap-index) y los mapas (sitemap-1, sitemap-2, o sitemap si es únicamente uno).

El índice es creado para que se soporten múltiples mapas de sitio; eso en caso de que agreguemos millones de enlaces.

No te preocupes, si vas a enviar el mapa del sitio a los motores de búsqueda envía el índice, ya que ahí hay enlaces hacia los otros mapas de sitio.

Recuerda que si escribes “Today” el sitemap tendrá la fecha en la que fue generado, recomiendo refrescarlo cada cierto tiempo.

Con eso terminamos por hoy. Si quieres aprender más sobre PHP haz click aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario