Supongamos que se ha creado una web todo con contenido dinámico, todo se consume a través de una API.

Nada se guarda en base de datos, sin embargo, queremos que Google conozca todo el contenido de nuestra web y por ello, se le quiere enviar un sitemap.

Esta entrada presenta un ejemplo de cómo generar dinámicamente un sitemap a través de un endpoint de una API proporcionada.

El código es algo ilustrativo para esta entrada, lo tendrás que adecuar en base a las necesidades de tu proyecto.

El código que genera el sitemap

function get_http_response_code($url) {
    $headers = get_headers($url);
    return substr($headers[0], 9, 3);
}

function mysitemap() {
	$base_url = "https://tudominio.com/";
	$url = "https://dog.ceo/api/breeds/list/all";
	
	if(get_http_response_code($url) == "200"){
		$data = file_get_contents($url);
		$array = json_decode($data, true);
		$claves = array_keys($array['message']);

		$dom = new DOMDocument();

		$dom->encoding = 'utf-8';
		$dom->xmlVersion = '1.0';
		$dom->formatOutput = true;

		$xml_file_name = 'sitemap.xml';
		$root = $dom->createElement('urlset');
		$attr_root = new DOMAttr('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
		$root->setAttributeNode($attr_root);

		foreach ($claves AS $clave) {
			$url_node = $dom->createElement('url');
			$child_node_url = $dom->createElement('loc', $base_url. '/' .$clave);
			$url_node->appendChild($child_node_url);
			$child_node_lastmod = $dom->createElement('lastmod', date('d-m-y h:i'));
			$url_node->appendChild($child_node_lastmod);
			$root->appendChild($url_node);
			$dom->appendChild($root);	
		}

		$dom->save($xml_file_name);	
	}else{
		echo "Algo no ha ido bien - Revisa la URL";
	}
}

Explicación del código

La API a consultar en la siguiente: https://dog.ceo/api/breeds/list/all

Primero, se comprueba que la URL devuelve un estado 200, indicando que la conexión se ha realizado correctamente.

Luego, preparamos los datos que nos devuelve el endpoint para capturar y trabajar los datos que necesitamos.

Por último, generamos el XML correspondiente.

Envíar el sitemap a Google

Por último, envía a través de Google Search Console el sitemap.xml generado.

Si lo necesitas, puedes cambiar el nombre del sitemap en la variable $xml_file_name.

Otra opción para que los buscadores descubran este sitemap, es incluirlo en tu fichero robots.txt, añadiendo al final del mismo el siguiente código:

Sitemap: https://tudominio.com/sitemap.xml

Futuras actualizaciones en el sitemap

El código, tal y como está, no actualiza el sitemap generado, es decir, una vez que se genere, no hay forma de que se vuelva a actualizar.

Puedes configurar una tarea programada o CRON en tu hosting para ejecutar la función de creación de sitemap cada día, así te asegurarás tener actualizado el sitemap.xml

¡Valora este artículo y ayúdame a mejorar la calidad del blog, si no te ha servido, déjame un comentario para revisarlo!
(Votos: 0 Promedio: 0)