Tabla de contenidos, cómo añadirla a WordPress sin plugins
Tabla de contenidos, cómo añadirla a WordPress sin plugins

Una vez más aquí. En esta ocasión vengo a responder una pregunta que me han echo el hace unos días. Me preguntaban qué plugin utilizo en esta web para mostrar la tabla de contenidos dentro de cada post. Bueno, pues mi respuesta a aquella pregunta fue que no uso ninguno. Lo que hago es utilizar un archivo JavaScript y un poco de CSS3 para darle formato.

Por si alguien no lo sabe, tener un tabla de contenidos en nuestro WordPress va a ayudar a la navegación del usuario y además es bueno para el SEO. En fin, en las siguientes líneas vamos a ver cómo crear una tabla de contenidos en WordPress sin usar plugins y que además se va a generar e insertar de manera automática dentro de cada artículo.

Añadir una tabla de contenidos sin plugins a WordPress

Para poder realizar esto, utilizo el código que he subido al repositorio de GitHub tabla de Contenidos, que está listo y preparado para trabajar con WordPress.

Archivo JavaScript

Lo primero que debemos conocer es la estructura de nuestros artículos. Los títulos de nuestro contenido tendrán la etiqueta HTML h2, los subtítulos con h3, y si queremos otro nivel más lo debemos utilizar con h4.

Dependiendo del nivel de detalle que tenemos en nuestro contenido, h2, h3, h4, y lo que queremos mostrar en nuestra tabla, podemos utilizar el siguiente script para tres niveles.

(function($){

	if ( $('body.single').length ){
		//Enlaces para mostrar u ocultar la tabla de contenidos
		var botonMenu = "<p><div id='botonMO'>CONTENIDO - [<a href='javascript:mostrar();'>Mostrar</a> / <a href='javascript:cerrar();''>Ocultar</a>]</div></p>";
		//Plantillas para la tabla. Por defecto está oculta
		var tmplwrap = "<div id='tabla-contenido' style='display:none;'>\n<p class='titulo'>Tabla de Contenido </p>\n{contenido}</div>";
		var tmplink = "<p {clase}><i class='fa fa-caret-right'></i> <a href={link} class='enlaces'>{texto}</a></p>\n";
		var cadena 	= "";
		
		//Preparamos el segundo y tercer nivel para que tenga una clase
		$('article h2').siblings('h3').addClass('n2');
		$('article h2').siblings('h4').addClass('n3');

		//Bucle, recorremos elementos para construir la tabla
		$('article h2, article h3, article h4').each(function(index, element){
	
			clase = "";
			if ($(this).hasClass('n2'))
				clase = 'class="n2"';
			else if($(this).hasClass('n3'))
				clase = 'class="n3"';

			texto 	 	= $(this).text();
			enlace_id	= texto.replace(/\d-\s|\?|¿/g,'');
			enlace_id 	= enlace_id.replace(/\s+/g, '_');
			$(this).attr('id',enlace_id);

			//Agregamos en una variable cadena
			cadena += tmplink.replace('{link}',"'#" + enlace_id + "'");
			cadena  = cadena.replace('{texto}',texto);
			cadena 	= cadena.replace('{clase}',clase);

		});

		//Ejemplo de link adicional, descomentar

		$('div.dc-social h3').attr('id','titulo-social');
		cadena +="<p><i class='fa fa-share-alt'></i> <a href='#titulo-social'>Compartir</a></p>\n";


		//artículos relacionados

		$('div.rel_posts h3').attr('id','quizasteinterese');
		cadena +="<p><i class='fa fa-link'></i> <a href='#quizasteinterese'>Artículos relacionados</a></p>\n";

		cadena = tmplwrap.replace('{contenido}',cadena);

		//Finalmente insertamos la cadena antes del primer elemento
		$(botonMenu).insertBefore( $('.entry-content h2').first() );

		$(cadena).insertBefore( $('.entry-content h2').first() );
	}

})(jQuery);

//funciones para mostrar u ocultar la tabla de contenido
function mostrar() {
            div = document.getElementById('tabla-contenido');
            div.style.display = '';
        }

function cerrar() {
            div = document.getElementById('tabla-contenido');
            div.style.display = 'none';
        }

 

Este código solo tendremos que guardarlo en un archivo, que para este ejemplo he llamado “tabla-contenidos”. Una vez guardado el archivo, no habrá más que subirlo a nuestro hosting y guardarlo dentro carpeta-de-theme/js. Hecho esto, si recargas tu WordPress verás que la tabla de contenidos aparece ya justo antes del primer h2 del post. Pero todavía falta darle algo de formato. Esto vamos a poder hacerlo con algunas líneas de CSS3.

Un poco de estilo para la tabla de contenidos

Después de obtener la tabla y comprobar su funcionalidad, ya podemos agregar el código CSS para dar un aspecto visual más atractivo. Este código es tan solo un ejemplo, y se puede encontrar disponible en elrepositorio de GitHub. Como digo, en el archivo style podemos utilizar el código:

#tabla-contenido{
	background-color: #EDEDED;
	max-width:600px;
	padding:10px 20px 20px;
	margin: 10px auto 30px;
	border-radius: 5px;
	border:1px solid #8C8C8C;
}

#tabla-contenido p{
	margin:0;
}

#tabla-contenido p.n2{
	margin-left: 20px;
}

#tabla-contenido p.n3{
	margin-left: 40px;
}

#tabla-contenido .titulo{
	background-color: #D8D8D8;
	padding: 2px;
	margin-bottom: 10px;
	border-radius: 5px;
	width: 100%;
	text-align: center;
	font-size: 16px;
	font-weight: bold;
	border:1px solid #8C8C8C
}

El resultado de una tabla de contenidos sin plugins en WordPress

Una vez terminado lo de añadir el código, tan solo nos queda limpiar la caché de nuestro WordPress y actualizar la página para poder verla como se puede ver en esta misma web.

tabla de contenidos implementada en WordPress

Y con esto, creo que cualquiera va a poder implementar una tabla de contenidos en su WordPress sin necesidad de añadir más plugins.







¿Qué te ha parecido este post?

¡Haz clic en una estrella para calificarla!

Puntuación media 3.1 / 5. Recuento de votos: 8

¡No hay votos hasta ahora! Sé el primero en calificar esta publicación.

No te pierdas otros artículos ...

¡Síguenos en las redes sociales!

¡Lamentamos que esta publicación no te haya sido útil!

¡Permítanos mejorar esta publicación!

¿Cuéntanos cómo podemos mejorar esta publicación?

Resumen
Tabla de contenidos, cómo añadirla a Wordpress sin plugins
Nombre
Tabla de contenidos, cómo añadirla a Wordpress sin plugins
Descripción
En este artículo vamos a ver cómo podemos añadir una tabla de contenidos a nuestros artículos de Wordpress sin necesidad de utilizar plugins.
Autor
sapoclay
Nombre del editor
entreunosyceros
Logo del editor

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.