Yo creo que a estas alturas es de todos conocida la necesidad de disponer de un mapa del sitio (sitemap) en XML para que los principales buscadores sepan organizar sus «visitas» por tu web, pero también es interesante disponer de un mapa en HTML.
Un mapa del sitio en HTML no solo sirve para ofrecer una vista jerárquica de tu web a los visitantes, lo que de por sí ya formaría parte de tu estructura de enlaces internos, sino que también es un estándar veterano que los buscadores saben reconocer.
Es verdad que hay algunos temas WordPress que ya disponen de una plantilla de página que muestra un mapa del sitio en HTML pero si tu tema no dispone de esta plantilla de página puedes disponer también de tu sitemap HTML con facilidad.
Índice de contenidos
:: Crear mapa del sitio HTML con código ::
Si no quieres usar plugins no hay problema, puedes crear tu propia plantilla de página y que muestre un mapa del sitio en HTML, los pasos son los siguientes:
- Crea un fichero vacío denominado
sitemap.php
en la carpeta del tema activo. - Abre el archivo recién creado y añade la cabecera que lo identifica como plantilla de página de WordPress y muestra la cabecera de tu tema a continuación, algo así:
<?php /* Template Name: Mapa del sitio HTML */ ?> <?php get_header(); ?>
- A continuación de estas líneas copia el siguiente código, que es el que genera el mapa del sitio en HTML:
<div id="content" > <div class="post"> <div class="title"> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Enlace permanente <?php the_title(); ?>"> <?php the_title(); ?> <!-- ----------------- Mostramos las entradas y su categoría ----------------- --> </a></h2> </div> <div class="entry siteMap"> <h2 id="posts">Entradas</h2> <ul> <?php // Añadimos categorías separadas por comas, que queramos no mostrar en el mapa,en el exclude $cats = get_categories('exclude='); foreach ($cats as $cat) { echo "<li><h3>".$cat->cat_name."</h3>"; echo "<ul>"; query_posts('posts_per_page=-1&cat='.$cat->cat_ID); while(have_posts()) { the_post(); $category = get_the_category(); // Solo se muestra un enlace de entrada cada vez, aunque esté en varias categorías if ($category[0]->cat_ID == $cat->cat_ID) { echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; } } echo "</ul>"; echo "</li>"; } ?> </ul> <!-- ----------------- Mostramos las categorías ----------------- --> <h2>Categorías</h2> <ul> <?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0&feed=RSS'); ?> </ul> <!-- ----------------- Mostramos las páginas ----------------- --> <h2 id="pages">Páginas</h2> <ul> <?php // Añadimos las páginas separadas por comas, que queramos excluir del mapa en el exclude wp_list_pages( array( 'exclude' => '', 'title_li' => '', ) ); ?> </ul> </div> </div> </div>
- Al final del código del mapa del sitio añade estos otros códigos para mostrar la barra lateral y el pié de página de tu tema (puede variar, usa la base del fichero
page.php
de tu tema:<?php get_sidebar(); ?> <?php get_footer(); ?>
- El código final de nuestro archivo
sitemap.php
quedaría así:<?php /* Template Name: Mapa del sitio HTML */ ?> <?php get_header(); ?> <div id="content" > <div class="post"> <div class="title"> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Enlace permanente <?php the_title(); ?>"> <?php the_title(); ?> <!-- ----------------- Mostramos las entradas y su categoría ----------------- --> </a></h2> </div> <div class="entry siteMap"> <h2 id="posts">Entradas</h2> <ul> <?php // Añadimos categorías separadas por comas, que queramos no mostrar en el mapa,en el exclude $cats = get_categories('exclude='); foreach ($cats as $cat) { echo "<li><h3>".$cat->cat_name."</h3>"; echo "<ul>"; query_posts('posts_per_page=-1&cat='.$cat->cat_ID); while(have_posts()) { the_post(); $category = get_the_category(); // Solo se muestra un enlace de entrada cada vez, aunque esté en varias categorías if ($category[0]->cat_ID == $cat->cat_ID) { echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; } } echo "</ul>"; echo "</li>"; } ?> </ul> <!-- ----------------- Mostramos las categorías ----------------- --> <h2>Categorías</h2> <ul> <?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0&feed=RSS'); ?> </ul> <!-- ----------------- Mostramos las páginas ----------------- --> <h2 id="pages">Páginas</h2> <ul> <?php // Añadimos las páginas separadas por comas, que queramos excluir del mapa en el exclude wp_list_pages( array( 'exclude' => '', 'title_li' => '', ) ); ?> </ul> </div> </div> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
- Creamos una nueva página en el editor de WordPress a la que solo tenemos que poner título.
- Elegimos la plantilla de página recién creada y publicamos
Lo que obtenemos es un completo mapa del sitio en HTML.
Si quieres puedes descargarte el código completo de la plantilla a continuación:
[download id=»151″]
:: Crear mapa del sitio HTML con plugins ::
Si no nos animamos a crear nuestra propia plantilla de página siempre podemos recurrir a plugins que lo harán por nosotros, estos son algunos:
- HTML page sitemap: solo tienes que activarlo, crear una página nueva y, donde iría el texto de la página añadir este shortcode:
[html_sitemap]
para tener tu mapa del sitio en HTML. - Sitemap page: en este caso, cuando lo hayas instalado y activado, insertas este otro shortcode:
[wp_sitemap_page]
- WP realtime sitemap: veterano pero aún funciona, como los otros tienes que añadir un shortcode, en este caso este:
[wp-realtime-sitemap]
Solo tienes que elegir el que más te guste.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Genial! Plugin menos! sabes cómo se podría hacer para ordenar las categorías por el número de post existentes y no por el orden alfabético que aparece por defecto? Gracias!
Por cierto, google webmasters parece no admitir sitemaps en html… «Tu sitemap parece ser una página HTML. Utiliza un formato de sitemap compatible. Google admite archivos de texto, sitemaps XML basados en el protocolo de sitemaps y feeds RSS o Atom 1.0»
Una pena… va a tocar volver al plugin…
Efectivamente, no vale para añadirlo a las Webmasters tools, para eso hay que seguir usando el xml. Esto es un plus