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.
Índice de contenidos
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
Deja tu comentario